ASP.NET MVC 3: ViewModel для основного шаблона? - PullRequest
4 голосов
/ 12 мая 2011

Когда я создал свой первый пустой проект MVC 3, это содержимое файла /Views/Shared/_Layout.cshtml:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>@ViewBag.Title</title>
    <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
    <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")" type="text/javascript"></script>
</head>

<body>
    @RenderBody()
</body>
</html>

Первое, что я заметил, это то, что <title>@ViewBag.Title</title>.Последнее, что я хочу сделать, - это использовать динамический ViewBag вместо строго типизированной ViewModel.

Как изменить мой _Layout.cshtml, чтобы вместо основного шаблона использовалась строго типизированная ViewModel?

1 Ответ

4 голосов
/ 12 мая 2011

Вы можете легко использовать @model для определения типа модели, но кто будет устанавливать модель главных страниц или создавать ее? Контроллер обрабатывает свое собственное представление, и модель главной страницы будет отличаться в зависимости от модели, созданной в каждом контроллере.

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

Я бы посоветовал жить с этим для простых случаев, таких как заголовок, если вы обнаружите, что там много чего делаете, у вас есть собственный контроллер, действие и представление, которые выполняют общие части, и позвоните Html.RenderAction() на главной странице, чтобы выполнить это.


http://gurustop.net

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