2009-01-17 230 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") %>