Контроллеры Asp.Net MVC - метаданные сопоставления действий и представлений - PullRequest
3 голосов
/ 17 января 2012

В моем приложении ASP.net MVC, работающем на движке представления ASPX, у меня есть контроллер с несколькими методами действий.Для каждого из этих методов действия я заметил, что могу назначить несколько представлений, а затем вызывать каждое по имени в методе действия контроллера.

Я хотел бы знать, где эти данные отображения хранятся в проекте.Я отсканировал файлы проекта и обнаружил, что этой информации нигде нет.Как узнать в больших проектах, содержащих несколько представлений, где можно найти все представления для определенного действия.Сначала я думал, что это будет храниться в каком-то файле конфигурации, созданном и поддерживаемом Visual Studio.Но, похоже, это не так.Так где же хранятся эти данные?Это будет кошмар, чтобы выяснить, какие файлы действительно необходимы, а какие нет, в больших проектах с несколькими представлениями.

Что вы думаете об этом?

Ответы [ 2 ]

4 голосов
/ 17 января 2012

Сантьяго прав в том, что ASP.NET MVC в значительной степени основан на соглашениях, но более подробно остановимся на нем, когда контроллер выглядит следующим образом:

public class FooController : Controller
{
    public ActionResult Bar()
    {
        return View();
    }
}

По соглашению, механизм просмотра будет искать представлениес именем Bar в следующих местах:

~/Views/Foo
~/Views/Shared

Это легко увидеть, добавив новое действие и не добавляя представление, и вы получите этот информативный экран исключений:

The view 'Bar' or its master was not found or no view engine supports the searched 
locations. The following locations were searched:
    ~/Views/Foo/Bar.aspx
    ~/Views/Foo/Bar.ascx
    ~/Views/Shared/Bar.aspx
    ~/Views/Shared/Bar.ascx
    ~/Views/Foo/Bar.cshtml
    ~/Views/Foo/Bar.vbhtml
    ~/Views/Shared/Bar.cshtml
    ~/Views/Shared/Bar.vbhtml

Аналогично, если у вас есть return View("ViewNameHere"), он будет искать ViewNameHere в тех же местах.

Чтобы ответить на ваш вопрос, даже если у проекта могут быть сотни представлений, а действия могут возвращать несколько представлений, если только выпереопределяя поведение механизма представления, все представления сгруппированы в соответствии с их контроллером или , размещенным в общей папке .

3 голосов
/ 17 января 2012

asp.net mvc основан на соглашениях. Представление, возвращаемое контроллером, подразумевается именем метода, если не используется явное имя представления. Для получения дополнительной информации отъезд: asp-net-mvc-views-review-cs

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...