Asp.net mvc 发送列表<;匿名类型>;在ASP.NETMVC中从控制器到视图

Asp.net mvc 发送列表<;匿名类型>;在ASP.NETMVC中从控制器到视图,asp.net-mvc,razor,anonymous-types,Asp.net Mvc,Razor,Anonymous Types,控制器动作方法- 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 it

控制器动作方法-

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;
}
@型号列表
@foreach(模型中的var项目)
{
@:item.Name;
}
这给了我一个例外-

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

有什么帮助吗?

在您的视图中尝试:

@model List<dynamic>
@型号列表
或者尝试在返回语句中执行以下操作:

return View(todaysTarget.Cast<object>().ToList());
返回视图(todaysTarget.Cast().ToList());
但如果执行后一种操作,item.Name语句将引发一个错误(type Object没有Name属性),这就是为什么dynamic应该完成任务的原因。

这应该是可行的。我在当地试过

 @model IEnumerable<dynamic> 


<div>
<h1> Test</h1>

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

</div>
@model IEnumerable
试验
@foreach(模型中的var项目)
{
@项目名称;
}

这是一个可怕的想法。视图的角度是特定于模型的。不要使用匿名类型,只创建该类型。为什么在此处使用匿名类型?如果试图创建可用于显示提供的值的泛型视图,则使用匿名类型不是一个好的解决方案。即使您仍然需要这种类型的功能,我建议使用model type=List或List