2012-01-29 97 views
0

我有.net mvc3網站。我必須實現頂級菜單。每個菜單標籤是導致他的動作並顯示另一個view.This我現在有:Mvc3執行自定義操作鏈接

<ul id="menu"> 
     <li>@Html.ActionLink("Home", "Index", "Home")</li> 
     <li>@Html.ActionLink("Products", "Products", "Home")</li> 
     <li>@Html.ActionLink("Pricing", "Pricing", "Home")</li> 
     <li>@Html.ActionLink("Our Team", "OurTeam", "Home")</li> 
     <li>@Html.ActionLink("Contact Us", "ContactUs", "Home")</li> 
</ul><!-- /menu --> 

這個觀點是我的佈局Html.RenderAction("Header", "Home");(因爲它必須出現在所有頁面) 我需要實現自定義ActionLink。錨文本必須是:

<span>text</span><b>text</b> 

「文本」是家庭(例如第一里的) 而目前的ActionLink必須添加類:「選定」的主播。

我該怎麼做?請幫助

p.s 我可以添加此菜單爲我的網站中的每個視圖與「選定」類當前視圖,但這不是很好的解決方案。

回答

1

如果我理解正確的,你想要把 「選擇」 類當前顯示的動作。

HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString() 
HttpContext.Current.Request.RequestContext.RouteData.Values["action"].ToString() 

然後你把這個「選擇」類的ActionLink的在前面回答的方式顯示

<li>@Html.ActionLink("Home", "Index", "Home", null, new {@class = ":selected"})</li> 

個人而言,我將創建: 您可以通過查看該做視圖中的檢查一個包含「MenuAction」列表的ViewModel,該列表公開除路由值以外的bool屬性「Selected」。從視角來看,Imo將更加清晰地處理數據。

+0

這是很好的解決方案。但我的菜單是局部視圖,並從佈局調用。所以HttpContext.Current.Request.RequestContext.RouteData.Values [「action」]。ToString()將始終返回此部分的名稱,並且此名稱將永遠不會與當前操作名稱匹配。 – 2012-01-29 10:07:17

+0

調用類似於@ Html.Action( 「MainMenu」,「菜單」)。比你做的邏輯和準備在控制器的視圖 – Iridio 2012-01-29 10:08:45

+0

我的錯誤我用var currentAction = htmlHelper.ViewContext.RouteData。GetRequiredString(「action」)而不是HttpContext.Current.Request.RequestContext.RouteData.Values [「action」]。ToString()。現在是工作。謝謝 – 2012-01-29 10:17:35

0

你可以用這個ActionLink超載添加class

<li>@Html.ActionLink("Home", "Index", "Home", null, new {@class = ":selected"})</li> 

的第5個參數是HTML屬性。

MSDN ActionLink的這種超負荷的


更新:

$(function(){ 
    var controllerName ='ViewContext.RouteData.Values["Controller"]'; 
    $('#' +controllerName).addClass(':selected'); 
}); 
+0

您將靜態「選定」類添加到Home鏈接。我需要動態添加「選定」到當前ActionLink – 2012-01-29 09:53:25

+0

@ user1086344。你想什麼時候添加它? – gdoron 2012-01-29 09:55:41

+0

例如,當您點擊「產品」時,頁面將加載「產品」視圖,並且必須將「選定」類添加到「產品」錨點並從前一個錨點移除。 – 2012-01-29 09:59:54