如何定义一个菜单,仅用于某些控制器以及何时存在某个模型ASP.NET MVC4

时间:2012-12-14 17:54:51

标签: c# asp.net-mvc-4

我有一个子菜单我想只在使用某些控制器并且存在某个模型时显示。我创建了一个局部并试图在_Layout.cshtml中渲染它,但我得到一个错误,说明传递的模型项是类型...但是这个字典需要类型的项...

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

目前我正在检查_submenu部分

中我的模型是否为空
@if(Model != null)

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

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

1 个答案:

答案 0 :(得分:1)

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

@model dynamic

@{
    ViewBag.Title = "IndexNotStonglyTyped";
}

<h2>Index Not Stongly Typed</h2>

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

</p>

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