我有一个登录页面。在登录页面中,我没有任何菜单,根据用户登录,主页上会显示一个菜单。
我的问题是仅在我的登录页面中显示菜单的方式?
菜单中有一个MenuControlPartial.cshtml页面如下:
<li><a href="#">Admin</a>
<ul>
<li>TimeKeeper</li>
<li>AAA</li>
<li>BBB</li>
<li>CCC</li>
</ul>
</li>
<li><a href="#">Settings</a>
<ul>
<li>VV</li>
<li>XX</li>
</ul>
</li>
</ul>
我的_layout.cshtml如下:
<div id="page">
<div id="header">
<div id="title">
<br />
</div>
@if (Request.IsAuthenticated)
{
<div id="loginInfo">
@Html.Partial("_LogOnPartial")
</div>
<div class="clear">
</div>
<div id="menucontainer">
@Html.Partial("MenuControlPartial")
</div>
<div class="clear"></div>
}
</div>
<div id="content">
@RenderBody()
</div>
</div>
}
</body>
答案 0 :(得分:3)
您可以测试当前的控制器和操作
@if (!(Html.ViewContext.RouteData.GetRequiredString("controller") == "Login" && Html.ViewContext.RouteData.GetRequiredString("action") == "Index")) {
<div id="menucontainer">
@Html.Partial("MenuControlPartial")
</div>
}
为了避免这种丑陋写一个帮手:
public static bool ShouldDisplayMenu(this HtmlHelper htmlHelper)
{
var routeData = htmlHelper.ViewContext.RouteData;
var controller = routeData.GetRequiredString("controller");
var action = routeData.GetRequiredString("action");
return !(controller == "Login" && action == "Index");
}
然后:
@if (Html.ShouldDisplayMenu()) {
<div id="menucontainer">
@Html.Partial("MenuControlPartial")
</div>
}