我正在构建一个侧面菜单页面以下代码
<nav class="navbar-default navbar-static-side" role="navigation">
<div class="sidebar-collapse">
<ul class="nav" id="side-menu">
@if ( User.IsInRole( Constants.ROLE_ADMIN ) ) {
<li class="@Html.IsSelected(controller: "UserGroup")">
<a href="@Url.Action("Index", "UserGroup")"><i class="fa fa-user"></i> <span class="nav-label">Users and Roles</span> <span class="fa arrow"></span></a>
<ul class="nav nav-second-level">
<li class="@Html.IsSelected(action: "Index")"><a href="@Url.Action("Index", "UserGroup")">Users</a></li>
<li class="@Html.IsSelected(action: "CreateUser")"><a href="@Url.Action("CreateUser", "UserGroup")">Create user</a></li>
</ul>
</li>
}
</ul>
</div>
</nav>
Html.IsSelected
扩展方法只需通过查看控制器和/或操作将css类添加到要设置为选中的项目
namespace MyWebApp.Helpers
{
public static class BootstrapExtensions
{
public static string IsSelected( this HtmlHelper html, string controller = null, string action = null ) {
string cssClass = "active";
string currentAction = (string)html.ViewContext.RouteData.Values["action"];
string currentController = (string)html.ViewContext.RouteData.Values["controller"];
if ( String.IsNullOrEmpty( controller ) )
controller = currentController;
if ( String.IsNullOrEmpty( action ) )
action = currentAction;
return controller == currentController && action == currentAction ?
cssClass : String.Empty;
}
}
}
除了Visual Studio在开发过程中仍然将扩展方法标记为无法识别的事实外,这非常有用。如果我构建项目everythings工作,但然后,在构建完成VS签署代码后,无法识别。
我在视图顶部添加了一个using,并在根视图web.config文件中添加了命名空间
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.2.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<add namespace="MyWebApp" />
<add namespace="MyWebApp.Resources" />
<!-- extensions namespace -->
<add namespace="MyWebApp.Helpers" />
</namespaces>
</pages>
</system.web.webPages.razor>
有什么建议吗?
答案 0 :(得分:1)
如果问题是命名空间,请尝试捎带到另一个使用的命名空间,例如System
namespace System
{
public static class BootstrapExtensions
{
还尝试在调试模式下运行项目,我的一些项目在发布模式下运行时遇到新代码时出现问题