Html ActionLink.将项目从列表分配到动作链接

本文关键字:链接 分配 列表 ActionLink 项目 Html | 更新日期: 2023-09-27 18:05:13

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

Html ActionLink.将项目从列表分配到动作链接

您必须强制转换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>