将多个数据项从控制器传递到视图

时间:2010-09-25 20:32:32

标签: asp.net-mvc

我正在使用VS 2010,MVC,VS 2005

我创建.dbml文件作为我的模型并在.dbml文件中映射表

我使用LINQ to SQL连接表。 我想显示两个表的记录,即tbl_class,tbl_subject

我的控制器中的COde看起来像这样

        public ActionResult SubjectByTeacher()
    {
        var DataContext = new SMSAPPDataContext();
        var resultclass = (from t in DataContext.tbl_teachers
                          from e in DataContext.tbl_teacherenrollments
                          from b in DataContext.tbl_batches
                          from c in DataContext.tbl_classes
                          from s in DataContext.tbl_subjects
                          where
                          t.Teacher_ID == e.Teacher_ID
                          &&
                          e.Batch_ID == b.Batch_ID
                          &&
                          b.Class_ID == c.Class_ID
                          &&
                          e.Sub_ID == s.Sub_ID
                          &&
                          t.Teacher_Name == "ABC"
                          select c;

        var resultsubject = from t in DataContext.tbl_teachers
                            from e in DataContext.tbl_teacherenrollments
                            from b in DataContext.tbl_batches
                            from c in DataContext.tbl_classes
                            from s in DataContext.tbl_subjects
                            where
                            t.Teacher_ID == e.Teacher_ID
                            &&
                            e.Batch_ID == b.Batch_ID
                            &&
                            b.Class_ID == c.Class_ID
                            &&
                            e.Sub_ID == s.Sub_ID
                            &&
                            t.Teacher_Name == "ABC"
                            select s;

            return View();

    }

然后我在控制器中创建一个类来映射两个变量,即resultclass,resultsubject

    public class MyViewModel 
{
    public MyViewModel(SMSAPPDataContext resultclass, SMSAPPDataContext resultsubject)
    {
        this.rc = resultclass;
        this.rs = resultsubject;
    }
    public SMSAPPDataContext rc { get; private set; }
    public SMSAPPDataContext rs { get; private set; }
}

此类将用于在强类型视图中将视图创建为模型。

但我无法弄清楚,在返回视图中传递什么?????

它可能就像返回视图(new myviewmodel);

但这会给出错误,我应该在代码???

中的任何位置使用ToList()属性

如果有人告诉我任何其他方法,请帮助

此致

1 个答案:

答案 0 :(得分:0)

假设您的视图被强类型化以使用MyViewModel,例如:

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<YourNameSpaceHere.MyViewModel>" %>

然后使用

之类的东西
return View(new MyViewModel(resultclass, resultsubject));

在控制器中应该工作。虽然我认为SMSAPPDataContext是LINQ查询将返回的正确类型。