ASP.NET MVC 3:主模板的视图模型?

4
当我创建了我的第一个空的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
您可以轻松使用@model来定义模型类型,但是谁会设置主页面的模型或创建它呢?控制器处理自己的视图,每个控制器创建的模型将根据不同而异。
因此,您可能希望使传递给视图的所有模型都继承自一个基本模型类,该类具有主页面所需的属性,并将基本类型作为模型类型。但是这样会显得太丑陋了。
如果您发现在此处执行了大量操作,请尝试在自己的控制器、操作和视图中执行共享部分,并在主页中调用Html.RenderAction()以执行该操作。

http://gurustop.net


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接