我有一个_layout页面,其中包含一个viewmodel和razor声明,如下所示
@using System.Globalization
@using Mvc4WebRole.Models
@model HomeViewModel
以及此页面@sidebar上使用此HomeViewModel
的部分在此代码之后,我的一些观点正在使用其他ViewModel,如下面的ProductDetailView
@model Mvc4WebRole.Models.PrdcDetailViewModel
但是我想在重定向ProductDetailView时重建项目,它给出了一个关于ViewModel要求的错误,如下所示:
有什么理由吗?我已经研究过这个错误,但他们都告诉我,你不应该在需要uniq实体时使用IEnumerable声明。这不是我的情况。
答案 0 :(得分:1)
_layout.cshtml文件是一个"主页",而不是视图,所以你不应该声明一个模型。动态的所有内容都应放在视图中,如果在_layout视图中需要动态,则应使用ViewBag或某些类似的对象/容器。
答案 1 :(得分:1)
您不应该强烈键入布局页面。
从_layout.cshtml文件中删除@model HomeViewMode
。
将视图绑定到视图的唯一位置是在视图文件中。如果侧栏使用此模型,请将其渲染为部分视图,该视图可以使用自己的模型。
从布局中删除HomeviewModel后,您可能需要将其添加到使用它的视图中,但还没有此行。