ASP.NET MVC 3:主模板的ViewModel?

时间:2011-05-11 23:22:02

标签: asp.net asp.net-mvc-3

当我创建我的第一个空的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 个答案:

答案 0 :(得分:4)

您可以轻松使用@model来定义模型类型,但是谁将设置母版页的模型或创建它?控制器处理自己的视图,主页的模型将根据每个控制器中创建的模型而不同。

因此,您可能希望使传递给视图的所有模型都从具有母版页所需属性的基础模型类继承,并使母版页具有基本类型作为模型类型,但它会太难看了。

我建议使用它来处理像标题这样的简单案例,如果你发现你在那里做了很多东西,有你自己的控制器,动作和视图来执行共享部分,并调用{{1在母版页中执行该操作。


http://gurustop.net