Asp.net mvc 在我的布局页面中使用模型

Asp.net mvc 在我的布局页面中使用模型,asp.net-mvc,Asp.net Mvc,我有一个_布局页面,它有一个viewmodel和razor声明,如下所示 @using System.Globalization @using Mvc4WebRole.Models @model HomeViewModel 以及使用此HomeViewModel的本页@sidebar上的一个部分 在此代码之后,我的一些视图使用了其他视图模型,如下面的ProductDetailView @model Mvc4WebRole.Models.PrdcDetailViewModel 但是,我想在重定向

我有一个_布局页面,它有一个viewmodel和razor声明,如下所示

@using System.Globalization
@using Mvc4WebRole.Models
@model HomeViewModel
以及使用此HomeViewModel的本页@sidebar上的一个部分

在此代码之后,我的一些视图使用了其他视图模型,如下面的ProductDetailView

@model Mvc4WebRole.Models.PrdcDetailViewModel
但是,我想在重定向ProductDetailView时重建项目,但它给了我一个有关ViewModel要求的错误,如下所示:


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

layout.cshtml文件是一种“母版页”,而不是视图,因此不应该声明模型。所有动态的内容都应该放在视图中,如果您需要在_layout视图中使用动态内容,您应该使用ViewBag或一些simular对象/容器。

您不应该强式键入布局页面

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

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


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

@tereško请尝试修复的不仅仅是
asp.net mvc
标记。从您的@layout.cshtml中删除@model声明,并且仅在强类型视图中使用它。感谢Serv yes我需要它作为侧栏内容,我将尝试使用部分视图