2010-11-26 82 views
2

在我的MVC Web應用程序中實現以下內容的最佳/最合適的方式是什麼?在ASP.NET MVC MasterPage中以編程方式應用樣式View

我有一個名爲Site.Master(這是我的母版頁視圖)的視圖,並且在這個視圖的頂部,我有5個鏈接,這些鏈接充當我的主站點導航。

<ul> 
    <li><a href="">Home</a></li> 
    <li><a href="">Links</a></li> 
    <li><a href="">Contact Us</a></li> 
    ...etc 
</ul> 

我想要的是能夠突出顯示相應的文字鏈接,根據用戶當前正在瀏覽的網站的哪一部分,所以如果他們使用的「聯繫我們」頁面,在聯繫我們鏈接在母版頁視圖上應用了不同的css風格。

在Web表單,我的每一個環節是一個超鏈接控制,和我在的母版,以便分配相關CssStyle每個HyperLink控件後面的代碼的屬性。

什麼是在我的MasterPage視圖中實現同樣的事情,現在我使用MVC的最佳方式是什麼?

回答

4

,我可能會寫一個HTML幫助系統將生成的菜單鏈接,並根據當前控制器和動作將應用CSS類current到錨:

public static MvcHtmlString MenuLink(
    this HtmlHelper htmlHelper, 
    string linkText, 
    string actionName, 
    string controllerName 
) 
{ 
    string currentAction = htmlHelper.ViewContext.RouteData.GetRequiredString("action"); 
    string currentController = htmlHelper.ViewContext.RouteData.GetRequiredString("controller"); 
    if (actionName == currentAction && controllerName == currentController) 
    { 
     return htmlHelper.ActionLink(
      linkText, 
      actionName, 
      controllerName, 
      null, 
      new { 
       @class = "current" 
      }); 
    } 
    return htmlHelper.ActionLink(linkText, actionName, controllerName); 
} 

然後在我看來,用這個幫手:

<ul> 
    <li><%= Html.MenuLink("Home", "Index", "Home") %></li> 
    <li><%= Html.MenuLink("Links", "Links", "Home") %></li> 
    <li><%= Html.MenuLink("Contact us", "Contact", "Home") %></li> 
</ul> 

然後,所有剩下的就是在一個CSS文件來定義這個current類突出:

.current { 
    ... 
} 
+0

嗨達林。這幾乎完美地工作。我遇到的問題是,對於該網站的其中一個部分,我通過該控制器的兩個可能操作中的一個(文章或新文章)來到那裏。我有一個局部的看法,我在整個網站上使用了'Article'操作,而不是默認的'LatestArticle'操作,所以無論何時我通過部分視圖導航到網站的這一部分,Helper方法中的條件永遠不會因爲'Article'永遠不會作爲actionName參數傳遞給我的MenuLink方法。有什麼建議麼? – marcusstarnes 2010-11-26 10:54:15

相關問題