加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 从子页面选择MVC中母版页上的右侧菜单

发布时间:2020-12-16 03:58:03 所属栏目:asp.Net 来源:网络整理
导读:我在MVC应用程序的共享_layout.cshtm文件(母版页)中有几个列表项. 就像是: ul liHome/li liabout/li licontact/li liblog/li/ul 当用户在主页中时,我希望家里的项目选择了类,如下所示: li class="selected"Home/li 等等.做这个的最好方式是什么? 在常规的
我在MVC应用程序的共享_layout.cshtm文件(母版页)中有几个列表项.

就像是:

<ul>
    <li>Home</li>
    <li>about</li>
    <li>contact</li>
    <li>blog</li>
</ul>

当用户在主页中时,我希望家里的项目选择了类,如下所示:

<li class="selected">Home</li>

等等.做这个的最好方式是什么?

在常规的asp.net网站上,我曾经在母版页中有一个方法,并从子页面调用该方法,但在MVC中,我不知道该怎么做.

谢谢.

解决方法

您可以编写自定义帮助方法:

public static MvcHtmlString MenuItem(
    this HtmlHelper htmlHelper,string text,string action,string controller
)
{
    var li = new TagBuilder("li");
    var routeData = htmlHelper.ViewContext.RouteData;
    var currentAction = routeData.GetRequiredString("action");
    var currentController = routeData.GetRequiredString("controller");
    if (string.Equals(currentAction,action,StringComparison.OrdinalIgnoreCase) &&
        string.Equals(currentController,controller,StringComparison.OrdinalIgnoreCase))
    {
        li.AddCssClass("selected");
    }
    li.SetInnerText(text);
    return MvcHtmlString.Create(li.ToString());
}

然后:

<ul>
    @Html.MenuItem("Home","home","home")
    @Html.MenuItem("About","about","home")
    @Html.MenuItem("Contact","contact","home")
    @Html.MenuItem("Blog","blog","home")
</ul>

帮助程序检查当前操作和控制器,如果它们与作为辅助程序的参数传递的操作匹配,它将选定的CSS类附加到li.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读