Html ActionLink。将列表中的项目分配给Action Link

时间:2013-03-22 14:16:36

标签: c# asp.net-mvc razor foreach actionlink

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

1 个答案:

答案 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>