MVC 5 Razor Navigation Active CLass

眩光

我正在尝试让活动班级显示在我的导航上。我写了htmlhelper:

public static string IsActive(this HtmlHelper htmlHelper, string controller, string action)
    {
        var routeData = htmlHelper.ViewContext.RouteData;

        var routeAction = routeData.Values["action"].ToString();
        var routeController = routeData.Values["controller"].ToString();

        var returnActive = (controller == routeController && action == routeAction);

        return returnActive ? "active" : "";
    }

这是我的导航:

<li @Html.IsActive("MemberDashboard", "Index")><a href="@Url.Action("Index", "MemberDashboard")"><span class="fa fa-list-alt fa-lg fa-fw"></span> Accounts</a></li>
 <li @Html.IsActive("Transfer", "Index")><a href="@Url.Action("Index", "Transfer")"><span class="fa fa-retweet fa-lg fa-fw"></span> Transfers</a></li>

当我在上述页面上时,导航不会激活。

拉斯·卡姆

我可以推荐以下几点:

  1. 您正在将结果@Html.IsActive()作为属性输出<li>元素上。我认为您想将其分配给元素的类属性。

  2. 我将使用不变文化来比较控制器字符串和动作字符串,并忽略大小写,以涵盖您要成功匹配的可能字符串。

  3. null如果控制器和操作字符串与当前控制器和操作不匹配,我将从方法中返回如果null返回并分配给<li>元素的class属性,则class属性将不会在标记中完全输出。差异不大,但可能比类属性为空更干净。

  4. 我将方法签名中控制器和动作的顺序与它们在框架方法中出现的顺序进行匹配。从长远来看,这将使其他人更直观地使用并且不会造成混淆。

因此,应用以上所有内容

public static string IsActive(this HtmlHelper htmlHelper, string action, string controller)
{
    var routeData = htmlHelper.ViewContext.RouteData;

    var routeAction = (string)routeData.Values["action"];
    var routeController = (string)routeData.Values["controller"];

    var isActive = string.Equals(controller, routeController, StringComparison.InvariantCultureIgnoreCase)
                   && string.Equals(action, routeAction, StringComparison.InvariantCultureIgnoreCase);

    return isActive ? "active" : null;
} 

和用法

<li class="@(Html.IsActive("Index", "MemberDashboard"))">
    <a href="@Url.Action("Index", "MemberDashboard")">
        <span class="fa fa-list-alt fa-lg fa-fw"></span> Accounts
    </a>
</li>
<li class="@(Html.IsActive("Index", "Transfer"))">
    <a href="@Url.Action("Index", "Transfer")">
        <span class="fa fa-retweet fa-lg fa-fw"></span> Transfers
    </a>
</li>

area如果您打算使用区域,则可能还需要包含一个字符串。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Razor语法突出显示在带有MVC 5的VS 2012中不起作用

来自分类Dev

RadiobuttonFor Mvc Razor语法

来自分类Dev

ASP.NET MVC5每个Razor页面在首次加载时非常慢

来自分类Dev

MVC Razor显示模板

来自分类Dev

Html5gallery.js在MVC 4的Razor视图中不起作用

来自分类Dev

模型中的MVC5 Razor NullReferenceException

来自分类Dev

MVC 5 Razor活动导航选项卡

来自分类Dev

在MVC5中使用Razor渲染局部视图

来自分类Dev

使用Bootstrap Modal显示带有MVC5 / razor的视图

来自分类Dev

在VB上使用MVC 5 Razor时,为什么在基本html标记前面需要“ @”?

来自分类Dev

HTML.Textbox帮助程序未在MVC5 Razor中设置文本框的值

来自分类Dev

无法在Razor部分中选择MVC 5 HTML帮助程序CheckBoxFor

来自分类Dev

在MVC 5 Razor视图中调用JavaScript函数

来自分类Dev

将ChartJ与MVC 5 Razor一起使用

来自分类Dev

MVC5 Razor html.dropdownlist用于在值位于数组中时选择的设置

来自分类Dev

MVC 5 Razor-标签未从类注释中更新

来自分类Dev

Aspx到Razor选择列表MVC5

来自分类Dev

通过ASPX的MVC Razor

来自分类Dev

从C#生成JQuery(MVC 5-Razor)

来自分类Dev

MVC Razor中的Angularjs

来自分类Dev

“懒惰” MVC5 Razor执行-ASP.NET(优化)

来自分类Dev

MVC 5 Razor网址内容(空)

来自分类Dev

使用ASP.NET MVC 5 Razor添加相关数据

来自分类Dev

Razor代码MVC 5中的Lambda表达式的ForEach循环5对于List <T>

来自分类Dev

MVC5 Razor上传图片

来自分类Dev

MVC 5 Razor视图显示Linq错误,但页面正确呈现

来自分类Dev

ASP.net MVC 5 Razor下拉框

来自分类Dev

ASP.NET MVC 5 Razor中的TinyMCE

来自分类Dev

使用视图模型属性填充下拉列表:MVC 5,Razor

Related 相关文章

热门标签

归档