我试图创建一个菜单,通过使用从数据库收集的数据创建ActionLinks。 我尝试使用@ item.name,@ item.ActionName ....但它不起作用.... 我做错了什么,但找不到什么....请帮助。 感谢
<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>
答案 0 :(得分: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以支持viewModel,您的原始语法将按预期工作。 也就是说:
使菜单项列表成为viewModel属性
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>