Подтвердить что ты не робот

Как просматриваются ссылки и контроллеры ASP.NET MVC?

Какой код добавляет Visual Studio (и где он помещается?), когда вы щелкните правой кнопкой мыши метод контроллера для ссылки на представление?

Как это сделать (связать контроллер и представление) без Visual Studio?

4b9b3361

Ответ 1

Это все по соглашению. Вы размещаете свои представления в папке Views/ControllerName для каждого контроллера и по умолчанию для поиска по умолчанию. Но это никоим образом не обязано.

Когда в контроллере вы пишете

return View();

Framework предполагает, что вы хотите, чтобы представление с тем же именем, что и имя действия, и ищет его в папках Views/Controller/. Затем Views/Shared.

Но в ваших действиях вы можете написать

return View("ViewName");

Framework будет искать View с именем "ViewName" в тех же папках.

Таким образом, имя по умолчанию для представления будет именем исполняемого действия. И это соглашение.

Ответ 2

По умолчанию asp.net MVC использует FormViewEngine, который представляет собой реализацию IViewEngine. У IViewEngine есть два метода: "FindView" и "FindPartialView", который фактически находит файл вида в папке "Views/Controller/".

Спасибо,
Rajeesh

Ответ 3

Visual Studio создаст папку (если она еще не существует) под ~/Views/{YourControllerName} и разместит ваше представление там. Если он не найдет его там, он будет выглядеть в папке ~/Views/Shared. Если вы хотите вручную создать представление, вам нужно добавить свою страницу в одну из этих папок, предпочтительно папку ~/Views/{YourControllerName}. Погрузитесь в учебник NerdDinner, чтобы увидеть это в действии.

http://nerddinnerbook.s3.amazonaws.com/Intro.htm

Ответ 4

Visual Studio использует шаблоны для создания представлений по умолчанию. Шаблоны находятся в папке [Visual Studio Install Directory]\Common7\IDE\ItemTemplates [CSharp | VisualBasic]\Web\MVC\CodeTemplates.

Если вы хотите создать страницу MVC.ASPX вручную, вам нужно просто создать пустую страницу и предоставить директиву страницы следующие атрибуты:

  • Язык ( "С#" или "VB" )
  • MasterPageFile (по умолчанию ~/Просмотры/Общий/Site.Master)
  • Наследует (для сильно типизированных моделей используйте ViewPage <ModelClassName> ; в противном случае ViewPage)

Пример:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="ViewPage<ListCompanyManagerDetailsViewModel>" %>

Для пользовательских элементов управления (.ASCX) применяются те же правила, за исключением того, что атрибут MasterPageFile не используется и наследуется от ViewUserControl.

Пример:

<%@ Control Language="C#" Inherits="ViewUserControl<Contact>" %>

P.S. Причина, по которой пространства имен не предшествует ни одному из моих имен классов, заключается в том, что я объявил их в разделе моего web.config.