Ruby on Rails的ASP.NET MVC版本“link_to_unless_current”

时间:2009-01-17 03:55:00

标签: ruby-on-rails asp.net-mvc

我想在我的SiteMaster中包含一个链接(使用Html.ActionLink)除非我链接的视图是当前视图。例如,当用户已经看到“注册”视图时,没有任何意义显示“注册”链接。

在Ruby on Rails中,我使用"link_to_unless_current"方法来执行此操作。

如何在ASP.NET MVC中复制此行为?我能想到的最好的是在我的控制器中设置一个布尔值来指示链接应该被隐藏(因为它是当前的)。与Rails方法相比,这看起来真的很尴尬,所以我认为我必须遗漏一些东西。

1 个答案:

答案 0 :(得分:10)

我不知道ASP.NET MVC中有这样的帮助方法,但它应该很容易推出自己的方法:

public static class HtmlExtensions
{
    public static string ActionLinkUnlessCurrent(this HtmlHelper htmlHelper, string linkText, string actionName)
    {
        string currentAction = htmlHelper.ViewContext.RouteData.Values["action"].ToString();
        if (actionName != currentAction)
        {
            return htmlHelper.ActionLink(linkText, actionName);
        }
        return linkText;
    }
}

然后像这样使用它:

<%= Html.ActionLinkUnlessCurrent("Link Text", "Index") %>