我尝试使用动态模型创建局部视图,但在将模型转换为List
后出现以下异常部分视图:
@model dynamic
@{
dynamic model;
var obj1ListType = new List<Obj1>().GetType();
var obj2ListType = new List<Obj2>().GetType();
Type unknown = Model.GetType();
if (unknown == obj1ListType)
{
model = new List<Obj1>(Model);
}
else if (unknown == obj2ListType)
{
model = new List<Obj2>(Model);
}
else
{
model = new List<Obj3>(Model);
}
}
问题在于我尝试使用
var Obj = Model.FirstOrDefault();
我得到以下异常:
'System.Collections.Generic.List' does not contain a definition for 'FirstOrDefault'
任何想法?也许是另一种创建动态局部视图的方法? 感谢
答案 0 :(得分:2)
我不确定你在这里尝试做什么,但我修改了你的代码并且它有效。我不得不改变一些事情。最重要的变化是将模型(实际上你应该在那里创建的模型)转换为列表,然后在其上调用FirstOrDefault()
。
工作代码进行了一些调整:
@model dynamic
@{
dynamic model;
var obj1ListType = new List<object>().GetType();
var obj2ListType = new List<object>().GetType();
Type unknown = Model.GetType();
if (unknown == obj1ListType)
{
model = new List<object>(Model);
}
else if (unknown == obj2ListType)
{
model = new List<object>(Model);
}
else
{
model = new List<object>(Model);
}
var data = model as List<object>;
var dataItem = data.FirstOrDefault();
<span>@dataItem</span>
}
控制器:
public ActionResult Partial1()
{
return View(new List<string>(){"Test1", "Test2"});
}
打印:
测试1