Asp.net mvc 使用局部视图时是否忽略原始模型声明?

Asp.net mvc 使用局部视图时是否忽略原始模型声明?,asp.net-mvc,html,asp.net-mvc-4,Asp.net Mvc,Html,Asp.net Mvc 4,我的每一个视图都需要一个导航栏,该导航栏在称为_NavigationPartial的局部视图中布局。此局部视图使用 @model IEnumerable<ProOptInteractive.Models.ProductCategory> @model IEnumerable 这是导航栏工作所必需的。但是,在我的一些视图中,我声明了其他模型,这些模型会覆盖部分视图中的模型,并且在尝试在浏览器中打开这些视图时会出现错误: @model ProOptInteractive.Models

我的每一个视图都需要一个导航栏,该导航栏在称为_NavigationPartial的局部视图中布局。此局部视图使用

@model IEnumerable<ProOptInteractive.Models.ProductCategory>
@model IEnumerable
这是导航栏工作所必需的。但是,在我的一些视图中,我声明了其他模型,这些模型会覆盖部分视图中的模型,并且在尝试在浏览器中打开这些视图时会出现错误:

@model ProOptInteractive.Models.ProductCategory <!-- this is incompatible! -->

@Html.Partial("_NavigationPartial")
@model prooptioninteractive.Models.ProductCategory
@Html.Partial(“导航部分”)

如何将局部视图设置为忽略视图中的原始模型声明?

您应该使用允许向其传递模型的重载。如果我没有弄错的话,Html.Partial将把父视图的模型传递给Partial视图。如果您使用
@Html.Partial(“\u NavigationPartial”,new[]{Model})
,则应满足您的Partial对IEnumerable模型的要求


您不能让视图忘记它的模型类型,您唯一能做的就是确保向它传递正确的模型类型。

这很容易混淆b/c部分未绑定到父级模型这是错误:传递到字典中的模型项的类型为“ProOptiInteractive.Models.ProductCategory”,但此词典需要类型为“System.Collections.Generic.IEnumerable`1[ProOptInteractive.Models.ProductCategory]”的模型项。显然他们是注定的:非常奇怪。我知道这不是因为我每天都用partials。显然需要更多的信息,但我不确定。。。