Asp.net mvc 在ASP.NET MVC中更改所选选项卡图像的最简单方法是什么?

Asp.net mvc 在ASP.NET MVC中更改所选选项卡图像的最简单方法是什么?,asp.net-mvc,navigation,tabs,Asp.net Mvc,Navigation,Tabs,我见过这个问题,但我不确定这是不是一个最佳的解决方案 我想看看其他人是如何在ASP.NET MVC中处理视图/控制器中的选项卡选择的 在ASP.NET MVC中实现可选选项卡的最简单方法是什么?我希望避免使用javascript方法,以允许未启用js的浏览器仍能看到所选选项卡。编辑:在上面划掉它,这不是我所做的,这是我使用的两种方法的无效组合 我必须在一页上处理两个不同地方的状态。第一种方法是将CSS添加到视图中,以将选项卡更改为正确的样式。我必须做的第二件事是使用ViewData给我一个变量,

我见过这个问题,但我不确定这是不是一个最佳的解决方案

我想看看其他人是如何在ASP.NET MVC中处理视图/控制器中的选项卡选择的


在ASP.NET MVC中实现可选选项卡的最简单方法是什么?我希望避免使用javascript方法,以允许未启用js的浏览器仍能看到所选选项卡。

编辑:在上面划掉它,这不是我所做的,这是我使用的两种方法的无效组合

我必须在一页上处理两个不同地方的状态。第一种方法是将CSS添加到视图中,以将选项卡更改为正确的样式。我必须做的第二件事是使用ViewData给我一个变量,我将该变量传递给我编写的助手,以便在视图的head部分输出CSS,以指示特定于on状态的页面(如果这有意义的话,类似于在产品页面上突出显示类别)

因此,在我看来,我有以下两条线:

<% var onState = ViewData["OnState"].ToString(); %>
<%= Html.OutputOnState(onState) %>


这很好地完成了我的目标。CSS是硬编码到helper中的,因为这是一个小站点,所以我确信有更好的方法来实现这一点。

我做了一些类似于下面过于简化的示例;-)

控制器:

public ActionResult Index()
{
    ViewData["MainMenuOn"] = "Home";
    return View();
}

public ActionResult About()
{
    ViewData["MainMenuOn"] = "About";
    return View();
}

public ActionResult Contact()
{
    ViewData["MainMenuOn"] = "Contact";
    return View();
}
视图:

那么你的css应该相当简单

ul#main-menu li
{
    background: green;
}

ul#main-menu li.on
{
    background: blue;
}
有很多方法可以剥这只猫的皮。。。根据您的需要,我将开始寻找实现HtmlHelper扩展的不同方法

嗯,, 查尔斯

public static string MainMenuOn(this HtmlHelper html, string menuItem)
{
    if ((html.ViewData["MainMenuOn"] != null) && (html.ViewData["MainMenuOn"] == menuItem))
        return "on";

    return "";
}
ul#main-menu li
{
    background: green;
}

ul#main-menu li.on
{
    background: blue;
}