动态菜单 - MVC

时间:2014-01-24 02:58:03

标签: asp.net-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包含View,Controller和MenuName字符串属性。

如何在此视图中显示这些内容?

1 个答案:

答案 0 :(得分: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将模型传递给View。

您可以使用以下方法将模型发送到视图:

return View(model)

在你的控制器中,其中model是你传递给视图的MenuModel的实例。

在视图中,您可以:

 @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>