2009-01-17 223 views
7

我想在我的SiteMaster中使用链接(使用Html.ActionLink),除非我链接的视图是当前视图。例如,当用户已经看到“注册”视图时,没有意义显示“注册”链接。Ruby on Rails的ASP.NET MVC版本“link_to_unless_current”

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

如何在ASP.NET MVC中复制此行为?我能想到的最好的方法是在我的控制器中设置一个布尔值来表明链接应该隐藏(因为它是最新的)。与Rails方法相比,这看起来非常尴尬,所以我认为我必须错过一些东西。

回答

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") %>