【问题标题】:ASP.NET MVC 3: ViewModel for master template?ASP.NET MVC 3:主模板的 ViewModel?
【发布时间】:2013-04-03 10:09:21
【问题描述】:

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

我注意到的第一件事是&lt;title&gt;@ViewBag.Title&lt;/title&gt;。我想做的最后一件事是使用动态的“ViewBag”而不是强类型的 ViewModel。

如何更改我的 _Layout.cshtml 以便主模板改用强类型 ViewModel?

【问题讨论】:

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


    【解决方案1】:

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

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

    我建议在这里的标题等简单情况下使用它,如果你发现你在那里做了很多事情,有你自己的控制器,执行共享部分的动作和视图,并调用Html.RenderAction()在母版页中执行。


    http://gurustop.net

    【讨论】:

      猜你喜欢
      • 2011-07-12
      • 1970-01-01
      • 2012-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-02
      • 1970-01-01
      • 2018-12-24
      相关资源
      最近更新 更多