我有一个基于上下文的菜单,它根据当前活动控制器显示,如下所示:
@switch (this.ViewContext.RouteData.Values["controller"].ToString().ToLower())
{
case "unitdetails":
Html.RenderPartial("_ContextMenu");
break;
case "operation":
Html.RenderPartial("_ContextMenu");
break;
case "trend":
Html.RenderPartial("_ContextMenu");
break;
case "wellguide":
Html.RenderPartial("_ContextMenu");
break;
case "setup":
Html.RenderPartial("_ContextMenu");
break;
case "site":
Html.RenderPartial("_ContextMenu");
break;
case "alarms":
Html.RenderPartial("_ContextMenu");
break;
case "asx":
Html.RenderPartial("_ContextMenu");
break;
case "reports":
}
工作正常,直到今天,我遇到了一个问题。我的控制器有一些不同的操作,但菜单不会与所有操作一起显示。因此,我需要在“报告”案例中进行检查,以检查当前操作是否应该渲染我的_ContextMenu
.
类似这样的事情是否合适:
case "reports":
if (this.ViewContext.RouteData.Values["action"].ToString().ToLower() == "unitactivity")
{
Html.RenderPartial("_ContextMenu");
break;
}
else
{
goto default;
}
我似乎无法让这个工作,因为它抛出一个异常说(注意:我删除了命名空间):
Message='UnitActivityModel' does not contain a definition for 'ViewUnitContract'
这适用于交换机中的所有其他情况,但是在开始检查当前操作时会出现问题。有什么建议么?其他控制器使用相同UnitActivityModel
的强类型视图。