更改布局文件 mvc4 中的类

本文关键字:mvc4 文件 布局 | 更新日期: 2023-09-27 17:56:03

我有一个布局页面,由标准的页眉和页脚以及RenderBody()函数组成。My Header 包含一个导航,顶部有大按钮作为系统中的模块

Customer    Quote    Jobs     etc

我的问题是我希望能够根据单击的按钮为这些按钮提供一类活动负载。我是否需要在 javascript 中执行此操作,或者无论如何我可以将模型数据或某些变量传递给布局文件来设置它?

更改布局文件 mvc4 中的类

我使用以下函数来实现这一点:

public static string MarkActive<TModel>(this HtmlHelper<TModel> html,string url)
{
    if (html.ViewContext.HttpContext.Request.Url.LocalPath
        .ToLower().StartsWith(url.ToLower().Trim()))
        return "active";
    else
        return null;
}

这是我保存在HtmlExtensions.cs文件中的扩展方法。我是这样使用它的:

<ul>
    <li class="@Html.MarkActive("/home")"><a href="/home">Home</a></li>
    <li class="@Html.MarkActive("/microsite"><a href="/microsite">View Microsite</a></li>
    <li class="@Html.MarkActive("/settings")"><a href="/settings/">Settings</a></li>
    <li><a href="/account/logout">Log out</a></li>
</ul>

可能有更好的解决方案,但这对我有用。简而言之,您应该检查页面的HttpContext

我使用以下方法来突出显示选定的菜单项:

    <ul class="menu">
        @{Dictionary<string, string> menuList = new Dictionary<string, string>() { 
                { "Customer", "Customer" },
                { "Quote", "Quote" },
                { "Jobs", "Jobs" },
                { "etc", "etc" },
            };
        }
        @foreach (var item in menuList )
        { 
            <li @(Request.ServerVariables["SCRIPT_NAME"].Contains(item.Key) ? " class=active" : string.Empty)>
                <a href="/Home/@item.Key">@item.Value</a></li>
        }
    </ul>

其中项。键的操作名称、项目。菜单中相应名称的值。