在我的 _layout 页面中使用模型

Using a model in my _layout page

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

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

以及此页面@sidebar 上的一个部分使用此 HomeViewModel

在这段代码之后,我的一些视图正在使用其他 ViewModel,例如下面的 ProductDetailView

@model Mvc4WebRole.Models.PrdcDetailViewModel

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

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

_layout.cshtml 文件是一种 "Master page",而不是视图,因此您不应该声明模型。所有动态的东西都应该放在视图中,如果你需要在 _layout 视图中动态的东西,你应该使用 ViewBag 或一些类似的 object/container.

你不应该强类型你的布局页面。

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

唯一应该将模型绑定到视图的地方是视图文件。如果您的侧边栏使用此模型,请将其渲染为分部视图,它可以使用自己的模型。

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