从子页在MVC选择母版页上右键菜单中 [英] select right menu on master page in MVC from child page

查看:137
本文介绍了从子页在MVC选择母版页上右键菜单中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个共享 _layout.cshtm 文件一对夫妇列表项(母版页)在我的MVC应用程序。

I have a couple of list items in a shared _layout.cshtm file (master page) in my MVC application.

是这样的:

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

当用户在一个网页,我要回家项目有类,就像这样:

when the user is in a homepage, I want home li item to have class selected, like so:

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

和等。什么是做到这一点的最好方法是什么?

and so on. What is the best way to do this?

在定期asp.net网站上,我曾经有在母版页的方法,并呼吁从子页,但在MVC中的方法,我不知道该怎么做。

In regular asp.net website, I used to have a method in master page and call that method from child page but in MVC I am not sure what to do.

感谢。

推荐答案

您可以编写一个自定义的helper方法:

You could write a custom helper method:

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类的

这篇关于从子页在MVC选择母版页上右键菜单中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆