2014-01-24 119 views
0

到目前爲止,我有 -動態菜單 - MVC

@model IEnumerable<Hub.Models.MenuModel> 
<ul> 
    @foreach (var item in ViewBag.MenuModel) { 
     <li>@Html.ActionLink(item.View, item.Controller, item.MenuName)</li> 

    } 
</ul> 

其中ViewBag.MenuModel包含視圖,控制器和MENUNAME字符串屬性。

如何在此視圖中顯示這些內容?

回答

2

沒有看到你的控制器很難確定爲什麼這不起作用,可能是ViewBag.MenuModel沒有設置,或者它不是正確的類型。

在你當前的代碼:

@model IEnumerable<Hub.Models.MenuModel> @*THIS LINE CREATES A STRONGLY-TYPED VIEW*@ 
<ul> 
    @foreach (var item in ViewBag.MenuModel) { 
     <li>@Html.ActionLink(item.View, item.Controller, item.MenuName)</li> 

    } 
</ul> 

那一線的強類型的MenuModel的看法。

但是,您正在使用ViewBag將模型傳遞給視圖。在你的控制器,其中模型是要傳遞到視圖的MenuModel實例

return View(model) 

您可以通過發送模型視圖。

在視圖則可以:

@model IEnumerable<Hub.Models.MenuModel> 
    <ul> 
     @foreach (var item in Model) { 
      <li>@Html.ActionLink(item.View, item.Controller, item.MenuName)</li> 

     } 
    </ul> 

編輯:原來的誤差全髖關節置換生成到ActionLink的是由於需要類型變量()函數。所以簡單的強制轉換爲字符串就可以了,如下:

@model IEnumerable<Hub.Models.MenuModel> 
     <ul> 
      @foreach (var item in Model) { 
       <li>@Html.ActionLink((string)item.View, (string)item.Controller, (string)item.MenuName)</li> 

      } 
     </ul> 
+0

該標記是局部視圖。所以我沒有與之相關的控制器。但是,您提供的第一個示例仍然無效。我仍然迷失。 – duckmike

+0

你有沒有添加斷點?所以你可以看到你傳遞給部分視圖的東西嗎?值是否設置? – JanR

+0

因爲VS不喜歡它,所以在添加了局部視圖的頁面上出現錯誤。這是錯誤:System.Web.Mvc.HtmlHelper >'沒有名爲'ActionLink'的適用方法,但似乎具有通過該名稱的擴展方法。擴展方法不能動態分派。考慮轉換動態參數或調用擴展方法而不使用擴展方法語法。 – duckmike