2010-09-25 87 views
0

我使用VS 2010,MVC,VS 2005傳遞多個數據項,查看

我創建的.dbml文件作爲我的模型和映射表.dbml文件

我加入使用LINQ表裏面SQL。 我想在我的控制器可顯示兩個表即tbl_class的紀錄,tbl_subject

代碼看起來像這樣

 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()屬性任何地方在代碼?

如果任何一個可以告訴我任何其他方式做到這一點,請幫助

問候

回答

0

假設你的看法是強類型的使用MyViewModel,如:

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

然後使用的東西像

return View(new MyViewModel(resultclass, resultsubject)); 

在控制器應該工作。雖然我不認爲SMSAPPDataContext是LINQ查詢返回的正確類型。

+0

SMSAPP是我的項目名稱。 我按照你說的通過項目, return View(new MyViewModel(resultclass,resultsubject)); 建立失敗,得到這個錯誤 「的最佳重載的方法匹配SMSAPP.Controllers.MyViewModel(SMSAPP.Models.SMSAPPDatacontext,SMSAPP.Models.SMSAPPDatacontext)有一些無效參數」 和視圖頁面的頭部顯示爲 Inherits =「System.Web.Mvc.ViewPage 」%> – hmmmmmm 2010-09-25 21:07:55

+0

我不認爲你的MyViewModel構造函數有正確的類型參數。在Visual Studio中將鼠標懸停在'var'上應該有所幫助。我猜它應該是類似的IQueryable 和IQueryable的。 – eddiegroves 2010-09-25 21:18:30

+0

當我將鼠標懸停在'var resultclass'上時,它顯示「class System.Collection.Generic.List 」..當我將鼠標懸停在'var resultsubject'上時,它顯示「interface System.Linq.IQueryable 」。 ............然後我改變我的構造函數的參數如你所說.......公共MyViewModel(IQueryable的 resultclass,IQueryable的 resultsubject)......還是得到了無效的參數錯誤 – hmmmmmm 2010-09-25 21:31:09