执行进入同一视图的不同查询

时间:2014-01-04 09:55:36

标签: c# asp.net-mvc asp.net-mvc-5

我想通过单个控制器操作方法将来自不同查询的内容传递到视图。

目前,我有控制器,我在同一张桌子上发出两个查询,首先是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数据。 请帮我。感谢所有回复

3 个答案:

答案 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
}