0

我有一个子菜单,我只想在使用某些控制器并且存在某个模型时才显示。我创建了一个部分并尝试在 _Layout.cshtml 中呈现它,但我收到一条错误消息,指出传递的模型项是类型......但是这个字典需要类型的项目......

我可以将菜单放在控制器的每个视图中,并传递正确类型的模型,但这似乎不太灵活。

目前我正在检查我的模型在 _submenu 部分中是否为空

@if(Model != null)

然而,这会让任何类型的模型通过,然后当它是错误的类型时它会出错。

我认为最好的方法是指定我的 @Html.Partial 仅在使用某些控制器时运行。或者有没有办法验证模型类型,如果传递给视图的模型不正确,代码就不会运行?

4

1 回答 1

1

听起来你需要你的模型是动态的(查看这个网站以获取更多信息),然后在你的视图中你可以检查模型的类型并采取相应的行动:

@model dynamic

@{
    ViewBag.Title = "IndexNotStonglyTyped";
}

<h2>Index Not Stongly Typed</h2>

<p>
@if(Model is MyType) {
   <span>got myType!</span>
}

</p>

注意:原始示例取自上述网站。

于 2012-12-14T18:10:39.640 回答