在我的_layout页面中使用模型

时间:2015-01-05 09:27:01

标签: asp.net-mvc

我有一个_layout页面,其中包含一个viewmodel和razor声明,如下所示

@using System.Globalization
@using Mvc4WebRole.Models
@model HomeViewModel

以及此页面@sidebar上使用此HomeViewModel

的部分

在此代码之后,我的一些观点正在使用其他ViewModel,如下面的ProductDetailView

@model Mvc4WebRole.Models.PrdcDetailViewModel

但是我想在重定向ProductDetailView时重建项目,它给出了一个关于ViewModel要求的错误,如下所示:

enter image description here

有什么理由吗?我已经研究过这个错误,但他们都告诉我,你不应该在需要uniq实体时使用IEnumerable声明。这不是我的情况。

2 个答案:

答案 0 :(得分:1)

_layout.cshtml文件是一个"主页",而不是视图,所以你不应该声明一个模型。动态的所有内容都应放在视图中,如果在_layout视图中需要动态,则应使用ViewBag或某些类似的对象/容器。

答案 1 :(得分:1)

您不应该强烈键入布局页面。

从_layout.cshtml文件中删除@model HomeViewMode

将视图绑定到视图的唯一位置是在视图文件中。如果侧栏使用此模型,请将其渲染为部分视图,该视图可以使用自己的模型。

从布局中删除HomeviewModel后,您可能需要将其添加到使用它的视图中,但还没有此行。