我想通过单个控制器操作方法将来自不同查询的内容传递到视图。
目前,我有控制器,我在同一张桌子上发出两个查询,首先是8名第二名和第二名9名学生:
public class StudentController : Controller
{
private MyDatabase db = new MyDatabase();
public ActionResult Index()
{
var query = db.table1.where(t => t.Class_ID == 8);
var query2 = db.table1.where(t => t.Class_ID == 9);
return View(query1, query2));
}
}
然后我想在Student控制器的Index视图上显示query1和query2数据。 请帮我。感谢所有回复
答案 0 :(得分:3)
您可以使用视图模型:
public class MyViewModel
{
public Model1 Model1 { get; set; }
public Model2 Model2 { get; set; }
}
然后构建控制器操作并将此视图模型传递给视图:
var model1 = (from r in db.content...)
var model2 = (from r in db.content...)
var viewModel = new ViewModel();
viewModel.Model1 = model1;
viewModel.Model2 = model2;
return View(viewModel);
现在,您的视图将强烈输入视图模型:
@model MyViewModel
您将能够访问其属性:
@Model.Model1.SomePropertyOfTheFirstModel
@Model.Model2.SomePropertyOfTheSecondModel
答案 1 :(得分:3)
使用两个属性创建名为ViewModels
的类,如下所示:
public class ViewModels<T1, T2> {
public T1 Model1 { get; set; }
public T2 Model2 { get; set; }
}
在您的控制器中创建ViewModels
的实例并将其传递给视图:
var viewModels= new ViewModels<Model1, Model2>() { Model1 = model1, Model2 = model2 };
return View(viewModels);
现在在视图上使用:
@model ViewModels<Model1, Model2>
@Model.Model1.PropertyOfModel1
@Model.Model2.PropertyOfModel2
答案 2 :(得分:0)
创建一个新的ViewModel
类,该类将包含该视图所需的数据,按数据填充ViewModel
个对象并将其传递给View
例如
public class CustomViewModel
{
//member of type model1
//member of type model2
}