我有一个简单的问题。在我的控制器中,我连接两个表并返回如下:
data = ...
select new { Contacts = item, Applications = items, Answers = j }
这很好用。我得到了我想要的东西:例如62个具有我想要的属性的数据对象。
但是在视图中我如何访问这些数据点?
简单@model dynamic
不起作用?必须有一些方法来做到这一点。
答案 0 :(得分:6)
最好的方法是创建一个ViewModel,它将包含您需要在视图中显示的所有属性。
public class DataViewModel {
public Contacts {get;set}
public Application {get;set;}
public Answers {get;set;}
}
创建" DataViewModel"
的列表List<DataViewModel> Datas = new List<DataViewModel>();
完成此操作后,您必须在从&#34;数据&#34;中获取后,在控制器中分配每个元素的值。通过简单地使用foreach循环创建的变量。
foreach (var instance of data) {
// Assign those values here
}
您必须将数据列表(ViewModel)从控制器传递到您的视图,如下所示:
return View(Datas);
并在您的视图中调用ViewModel列表,如下所示:
@model IEnumerable<models.DataViewModel>
答案 1 :(得分:2)
创建一个&#39;保护伞&#39;模特如:
public DataModel
{
public Contacts contacts {get;set}
public Application applications {get;set;}
public Answers answers {get;set;}
}
在控制器上:
select new DataModel(){ Contacts = item, Applications = items, Answers = j }
并查看:
@model DataModel
答案 2 :(得分:0)
班级
public DataModel
{
public Contacts {get;set}
public Application {get;set;}
public Answers {get;set;}
}
控制器
DataModel model = new DataModel();
model.Contacts = items;
model.Application = item;
model.Answers= items;
return View(model);
查看
@model DataModel
// will get all three tables data here
@Model.Contacts
@Model.Application
@Model.Answers