首页 > 解决方案 > 在 ViewBag 的循环元素中显示

问题描述

我尝试使用循环 ViewBag 中的所有元素在视图中显示

我的 ViewBag(在控制器类中)

ViewBag.MenuItems =
  (
     from components in _context.Components
     where components.ComponentName== "menuPosition"
     select new
     {
         controller = components.valueI,
         action = components.valueI,
      }
  ).ToList();

我的观点

@foreach (var item in ViewBag.MenuItems)
   {
   <p>@item.controller</p>
   }

我有错误

RuntimeBinderException: 'object' does not contain a definition for 'controller'

标签: c#asp.netrazor

解决方案


在循环时使用 ViewBag 作为 List 它将 viewbag 元素视为 MenuItem 类对象

@foreach (var item in ViewBag.MenuItems as List<MenuItem>)
{
    <p>@item.controller</p>
}

添加类

public class MenuItem
{
public string controller {get;set;}
public string action {get;set;}
}

在控制器类中使用

ViewBag.MenuItems =
  (
     from components in _context.Components
     where components.ComponentName== "menuPosition"
     select new MenuItem
     {
         controller = components.valueI,
         action = components.valueI,
      }
  ).ToList();

推荐阅读