到目前为止,我有 -
@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字符串属性。
如何在此视图中显示这些内容?
答案 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>