我网站布局中的所有页面都继承了主布局。每当我在Layout视图中粘贴调试断点时,我都可以看到布局类的Model与控制器传递给View的模型相同。我的布局文件是无类型的(除了页面本身之外没有@model声明)
此外,在此布局内发生的任何“RenderPartials”调用都会将此模型传递给其他视图。
这是对的吗?
这意味着我可以在我的布局中执行@ Model.SomeProperty工作/不工作,具体取决于我是否访问了具有“SomeProperty”属性的Model类的页面!
一个例子:
Page.cshtml
@model Project.PageModel
Layout = "/Views/Layout/Master.cshtml";
Master.cshtml:
Html.RenderPartial("../Layout/_Footer", null, null);
_Footer.cshtml:
@Html.Raw(Model.GetType().ToString())
<div class="blah">
...
</div>
查看此页面会输出“Project.PageModel”,即使它没有模型声明,我也明确地传递了一个NULL模型和一个NULL ViewDataDictinary。然后,我可以从主布局呈现的部分内部调用此模型上的属性。