Après avoir regardé comment les poignées démo ASP.NET MVC Orange Tabs onglets, ils ont quelque chose comme:Est-ce que cela semble être une bonne approche pour implémenter des onglets dans ASP.NET MVC?
Vue:
<ul id="menu">
<% if (Html.IsCurrentAction("Index", "Home")) { %>
<li class="active"><%= Html.ActionLink("Home", "Index", "Home")%></li>
<% } else { %>
<li><%= Html.ActionLink("Home", "Index", "Home") %></li>
<% }%>
<% if (Html.IsCurrentAction("About", "Home"))
{ %>
<li class="active"><%= Html.ActionLink("About", "About", "Home")%></li>
<% } else { %>
<li><%= Html.ActionLink("About", "About", "Home")%></li>
<% }%>
<% if (Html.IsCurrentAction("SampleTags", "Home"))
{ %>
<li class="active"><%= Html.ActionLink("Sample Tags", "SampleTags", "Home")%></li>
<% } else { %>
<li><%= Html.ActionLink("Sample Tags", "SampleTags", "Home")%></li>
<% }%>
</ul>
et une classe d'aide correspondante:
namespace Helpers
{
public static class IsCurrentActionHelper
{
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;
}
}
}
Cela vous semble comme une manière élégante d'aborder ce problème? Je n'ai pas aimé javascript parce que je veux que le site soit bien pour les navigateurs non-js activés et l'approche de chaîne de requête semble cludgey.