【问题标题】:How could i change layout page from viewpage in mvc我如何从 mvc 中的 viewpage 更改布局页面
【发布时间】:2012-07-10 07:01:48
【问题描述】:

我正在使用 razor 开发 asp.net mvc 3。我的项目中有一个布局(主)页面。它包含一个带有 4 个链接的侧面板和 viewpage (@RenderBody) 的位置。当用户点击link1时,它重定向到viewpage1并且应该选择link1,当他点击link2时,它重定向到viewpage2并且应该选择link2,依此类推。它很好地重定向到所需的页面,但它总是选择链接 1,尽管我点击了链接 2、链接 3、链接 4。我如何从单个视图页面中选择布局页面中的适当链接。引导我。

【问题讨论】:

    标签: c# asp.net-mvc-3 razor


    【解决方案1】:

    selected 我猜你的意思是使用 CSS 突出显示,不是吗?如果是这种情况,我建议您编写一个自定义 HTML 帮助程序来生成这些链接:

    public static IHtmlString 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("active");
        }
        li.InnerHtml = htmlHelper.ActionLink(text, action, controller).ToHtmlString();
        return new HtmlString(li.ToString());
    }
    

    然后在你的布局中使用帮助器:

    <ul>
        @Html.MenuItem("link 1", "Action1", "Controller1")
        @Html.MenuItem("link 2", "Action2", "Controller2")
        ...
    </ul>
    

    现在剩下的就是在你的 CSS 类中定义 .active 规则:

    .active {
        ... something fancy to pop the currently selected link from the others
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-18
      • 1970-01-01
      • 2021-02-04
      • 1970-01-01
      • 2020-07-25
      • 2022-01-07
      • 1970-01-01
      相关资源
      最近更新 更多