0

我试图通过使用从数据库收集的数据创建 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>
4

1 回答 1

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>
于 2013-03-22T14:19:13.430 回答