我有一个小型的MVC站点,它使用Html.ActionLink帮助器作为导航栏.我想改变的一件事是默认的ActionLink将呈现一个到页面的html链接,即使这是当前页面.
例如,它创建一个这样的链接:
<a href="/myUrl">Some title...</a>
Run Code Online (Sandbox Code Playgroud)
即使你已经在/ myUrl.如果它会禁用该链接并且可能插入一个特殊的CSS类来显示当前访问的页面,那将是很好的,如下所示:
<a href="#" class="currentPageCSS">My Url</a>
<a href="/someOtherUrl">Some Other Url</a>
Run Code Online (Sandbox Code Playgroud)
在加载MVC站点之前一定遇到过这个问题,所以我很想知道其他人是如何处理它的.
Dar*_*rov 32
这似乎是滚动自定义HTML帮助程序的好方案.所以让我们滚动它:
public static class LinkExtensions
{
public static MvcHtmlString MyActionLink(
this HtmlHelper htmlHelper,
string linkText,
string action,
string controller
)
{
var currentAction = htmlHelper.ViewContext.RouteData.GetRequiredString("action");
var currentController = htmlHelper.ViewContext.RouteData.GetRequiredString("controller");
if (action == currentAction && controller == currentController)
{
var anchor = new TagBuilder("a");
anchor.Attributes["href"] = "#";
anchor.AddCssClass("currentPageCSS");
anchor.SetInnerText(linkText);
return MvcHtmlString.Create(anchor.ToString());
}
return htmlHelper.ActionLink(linkText, action, controller);
}
}
Run Code Online (Sandbox Code Playgroud)
在你的视图中:
<%= Html.MyActionLink("hello foo", "Index", "Home") %>
<%= Html.MyActionLink("hello bar", "About", "Home") %>
...
Run Code Online (Sandbox Code Playgroud)
并根据你在哪里帮助将产生适当的锚.
| 归档时间: |
|
| 查看次数: |
5308 次 |
| 最近记录: |