【问题标题】:Send list<AnonymousType> from controller to view in ASP.Net MVC从控制器发送列表<匿名类型>以在 ASP.Net MVC 中查看
【发布时间】:2017-01-10 16:41:13
【问题描述】:

控制器动作方法-

public ActionResult Index()
{
    var todaysTarget = from ra in db.Employee ...
                       select new { ra.RaCode, ra.TargetQuantity };
    return View(todaysTarget.ToList());
}

剃刀视图-

@model List<object>


@foreach (var item in Model)
{
    @:item.Name;
}

它给了我例外-

此词典需要“System.Collections.Generic.List`1[System.Object]”类型的模型项。

有什么帮助吗?

【问题讨论】:

  • 这是一个可怕的想法。观点是特定于模型的。不要使用匿名类型,只需创建类型即可。
  • 为什么要在这里使用匿名类型?
  • 如果尝试创建可用于显示提供的值的通用视图,这不是使用匿名类型的好解决方案。即使您仍然需要这种类型的功能,我建议使用 model type = List OR List 并始终将 value.ToString() 传递给视图(如果它不是字符串)。如果您不需要将其作为通用视图,则必须将其设为固定类型。

标签: asp.net-mvc razor anonymous-types


【解决方案1】:

在你的视野中尝试:

@model List<dynamic>

或者尝试在你的 return 语句中做:

return View(todaysTarget.Cast<object>().ToList());

但是如果你使用后者,item.Name 语句将引发错误(类型 Object 没有 Name 属性),这就是为什么 dynamic 应该完成工作。

【讨论】:

    【解决方案2】:

    这应该可以。我在本地试过。

     @model IEnumerable<dynamic> 
    
    
    <div>
    <h1> Test</h1>
    
    @foreach (var item in Model)
    {
         @item.Name;
    }
    
    </div>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-26
      • 1970-01-01
      • 2019-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多