開創全省的鏈接列表,是否有一種方法,使的在控制,而不必每一個動作鏈接列表添加從控制器動作ASP.NET MVC
<li><%= Html.ActionLink("Link Name", "Index", "Home")%></li>
每個項目?
開創全省的鏈接列表,是否有一種方法,使的在控制,而不必每一個動作鏈接列表添加從控制器動作ASP.NET MVC
<li><%= Html.ActionLink("Link Name", "Index", "Home")%></li>
每個項目?
是的。
您可以返回可以呈現爲定位標記的鍵值對的SelectList。
或者,您可以創建在一個模型,這是不是最好的地方吧,控制器,它返回到視圖,您可以再itterate通過。
public class myAnchorList
{
public string text {get;set;}
public string controller {get;set;}
public string action {get;set;}
}
然後在您的代碼中創建一個List<myAnchorList>
。
List<myAnchorList> Anchors = new List<myAnchorList>();
裝滿數據並返回列表。
return View(Anchors).
如果您已經在模型上傳遞,那麼您需要將此列表添加到要返回的模型中。
有意義嗎?如果不發表評論,我會嘗試進一步解釋。
編輯
現在讓我說,我有一點點時間完成圖片。
在客戶端你會有這個未經測試的代碼;
<ul>
<% foreach(myAnchorList item in Model.Anchors){ %>
<li><%= Html.ActionLink(item.text, item.action, item.controller)%></li>
<% } %>
</ul>
除了griegs answer,它可能有助於通過反射來構建控制器操作的列表。在這種情況下,你可能想看看:
new ReflectedControllerDescriptor(typeof(TController)).GetCanonicalActions()
信用爲這個答案去:Accessing the list of Controllers/Actions in an ASP.NET MVC application
不對列表錨=新的List ();並返回View(Anchors)進入相同的動作? 公衆的ActionResult指數() { } 我得到一個錯誤CS1061:「對象」不包含「錨」的定義,並沒有擴展方法「錨」 –
2009-10-14 20:06:45
myAnchorList是一類和錨是名字類型爲myAnchorList的通用列表。因此,您需要將myAnchorList放置在您的代碼有權訪問的名稱空間中。那麼你將該列表傳遞給視圖,視圖也需要訪問該命名空間。 – griegs 2009-10-14 20:34:52