Какой код добавляет Visual Studio (и где он помещается?), когда вы щелкните правой кнопкой мыши метод контроллера для ссылки на представление?
Как это сделать (связать контроллер и представление) без Visual Studio?
Какой код добавляет Visual Studio (и где он помещается?), когда вы щелкните правой кнопкой мыши метод контроллера для ссылки на представление?
Как это сделать (связать контроллер и представление) без Visual Studio?
Это все по соглашению. Вы размещаете свои представления в папке Views/ControllerName для каждого контроллера и по умолчанию для поиска по умолчанию. Но это никоим образом не обязано.
Когда в контроллере вы пишете
return View();
Framework предполагает, что вы хотите, чтобы представление с тем же именем, что и имя действия, и ищет его в папках Views/Controller/. Затем Views/Shared.
Но в ваших действиях вы можете написать
return View("ViewName");
Framework будет искать View с именем "ViewName" в тех же папках.
Таким образом, имя по умолчанию для представления будет именем исполняемого действия. И это соглашение.
По умолчанию asp.net MVC использует FormViewEngine, который представляет собой реализацию IViewEngine. У IViewEngine есть два метода: "FindView" и "FindPartialView", который фактически находит файл вида в папке "Views/Controller/".
Спасибо,
Rajeesh
Visual Studio создаст папку (если она еще не существует) под ~/Views/{YourControllerName} и разместит ваше представление там. Если он не найдет его там, он будет выглядеть в папке ~/Views/Shared. Если вы хотите вручную создать представление, вам нужно добавить свою страницу в одну из этих папок, предпочтительно папку ~/Views/{YourControllerName}. Погрузитесь в учебник NerdDinner, чтобы увидеть это в действии.
Visual Studio использует шаблоны для создания представлений по умолчанию. Шаблоны находятся в папке [Visual Studio Install Directory]\Common7\IDE\ItemTemplates [CSharp | VisualBasic]\Web\MVC\CodeTemplates.
Если вы хотите создать страницу MVC.ASPX вручную, вам нужно просто создать пустую страницу и предоставить директиву страницы следующие атрибуты:
Пример:
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="ViewPage<ListCompanyManagerDetailsViewModel>" %>
Для пользовательских элементов управления (.ASCX) применяются те же правила, за исключением того, что атрибут MasterPageFile не используется и наследуется от ViewUserControl.
Пример:
<%@ Control Language="C#" Inherits="ViewUserControl<Contact>" %>
P.S. Причина, по которой пространства имен не предшествует ни одному из моих имен классов, заключается в том, что я объявил их в разделе моего web.config.