gpt4 book ai didi

asp.net-mvc-3 - 如何在 ASP MVC3 中创建可重用的导航菜单?

转载 作者:行者123 更新时间:2023-12-02 03:10:03 25 4
gpt4 key购买 nike

我现在有以下导航 html/代码在多个 View 中重复:

<ul class="topNav">
<li class="selected">@Html.ActionLink("Dashboard", "Dashboard", new { id = ViewContext.RouteData.GetRequiredString("id") })</li>
<li>@Html.ActionLink("Stats", "Stats", new { id = ViewContext.RouteData.GetRequiredString("id") })</li>
<li>@Html.ActionLink("Questions", "Questions", new { id = ViewContext.RouteData.GetRequiredString("id") })</li>
<li>@Html.ActionLink("Answers", "Answers", new { id = ViewContext.RouteData.GetRequiredString("id") })</li>
<li>@Html.ActionLink("Contacts", "Contacts", new { id = ViewContext.RouteData.GetRequiredString("id") })</li>
</ul>

当然在每个 View 中class="selected" li的被改变了。有没有一种简单的方法可以将此代码块放置在部分 View 或布局 View 中?

另外,我真的必须使用ViewContext.RouteData.GetRequiredString("id")吗?到达id Controller 的参数或者有更简单的方法吗?

最佳答案

这里有两种方法来处理这个问题。

  1. 如果您想要一个真正可重用的(独立于应用程序的解决方案),您应该创建一个 HtmlHelper 方法 Creating Custom HTML Helpers

  2. 如果您仅在应用程序中需要它,请考虑执行类似的操作。

    public static class ControllerHelper
    {
    /// <summary>
    /// Checks the current action via RouteData
    /// </summary>
    /// <param name="helper">The HtmlHelper object to extend</param>
    /// <param name="actionName">The Action</param>
    /// <param name="controllerName">The Controller</param>
    /// <returns>Boolean</returns>
    public static bool IsCurrentAction(this HtmlHelper helper, string actionName, string controllerName)
    {
    string currentControllerName = (string)helper.ViewContext.RouteData.Values["controller"];
    string currentActionName = (string)helper.ViewContext.RouteData.Values["action"];

    if (currentControllerName.Equals(controllerName, StringComparison.CurrentCultureIgnoreCase) && currentActionName.Equals(actionName, StringComparison.CurrentCultureIgnoreCase))
    return true;

    return false;

    }
    }


    <ul class="topNav">
    <li @if(Html.IsCurrentAction("DashBoard", "DashBoard")) { <text>class="selected"</text> }>@Html.ActionLink("Dashboard", "Dashboard", new { id = ViewContext.RouteData.GetRequiredString("id") })</li>
    <li>@if(Html.IsCurrentAction("Stats", "Stats")) { <text>class="selected"</text> }>@Html.ActionLink("Stats", "Stats", new { id = ViewContext.RouteData.GetRequiredString("id") })</li>

    // ....
    </ul>

请告诉我是否要实现第一种方法,我将提供更多帮助

希望这有帮助

关于asp.net-mvc-3 - 如何在 ASP MVC3 中创建可重用的导航菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8314784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com