2013-03-22 65 views
0

我試圖通過使用從數據庫收集的數據創建ActionLink來創建菜單。 我試着@ item.name,@ item.ActionName ....但它不工作.... 我做錯了什麼,但找不到....請幫助。 謝謝Html ActionLink。從列表中將項目分配到操作鏈接

<ul id="menu"> 
    @foreach (var item in ViewBag.MenuList) 
    { 
     <li class="ajax_link"> 
      @Html.ActionLink(item.Name, item.ActionName, item.ControllerName) 
     </li> 
     <li>|</li> 
    } 
</ul> 

回答

3

您必須投影ViewBag。我假設你有一個叫MenuList或類似的課程。你的代碼更改爲這個

@foreach (var item in ViewBag.MenuList as List<HomeController.MenuList>) 
{  
  <li class="ajax_link"> 
    @Html.ActionLink(item.Name, item.ActionName, item.ControllerName) 
    </li> 

或者,贊成視圖模型的完全拋棄了煩人的ViewBag並按照預期的原始語法會工作。 也就是說:

讓你的菜單項列表視圖模型屬性

public class MenuList 
{ 
    public string Name { get; set; } 
    public string ActionName { get; set; } 
    public string ControllerName { get; set; } 
} 

public class ViewModel 
{ 
    //... 
    public List<MenuList> MenuLists { get; set; } 
} 

強類型視圖

@model MvcApplicationForTestingStuff.Controllers.HomeController.ViewModel 

,然後你的行動鏈接將與該語法工作

<ul id="menu"> 
    @foreach (var item in Model.MenuLists) 
    { 
     <li class="ajax_link"> 
      @Html.ActionLink(item.Name, item.ActionName, item.ControllerName) 
     </li> 
     <li>|</li> 
    } 
</ul> 
+0

嘗試過。它也行不通): – Aypeross 2013-03-22 14:20:08

+0

@Aypeross什麼不起作用?或者更具體地說,這實現了什麼?你能給我們一個觀點來源嗎? – 2013-03-22 14:24:05

+0

@Aypeross編輯答案。也許再來一次 – 2013-03-22 14:48:46