2017-03-22 111 views
0

我試圖從一個視圖模型傳遞數據,該視圖模型來自2個模型。控制器看起來是這樣的在ASP.NET MVC中使用視圖模型列出數據困難

public ActionResult SessionDetails() 
{ 
    var Sessions = (from a in db.Appointments 
        join c in db.Clients 
        on a.clientid equals c.id into SessionList 
        from c in SessionList.DefaultIfEmpty() 
        select new SessionViewModel() 
        { 

         id = a.id, 
         sessionnotes = a.sessionnotes, 
         firstname = c.firstname, 
         date = a.date, 

        }).ToList() 
      .Select(x => new SessionViewModel() 
      { 

       id = a.id, 
       sessionnotes = a.sessionnotes, 
       firstname = c.firstname, 
       date = a.date, 
      }); 

    return View(Sessions); 
} 

它提出錯誤說名稱「a」在當前上下文中不存在?關於發生了什麼的任何想法?

我真的很陌生,我遵循這些指示使用網站http://techfunda.com/howto/262/list-data-using-viewmodel這做我想要SessionDetails做。

我已經對此有看法。

UPDATE

我已經作出以下改動:

public ActionResult SessionDetails() 
{ 
    var Sessions = (from a in db.Appointments 
        join c in db.Clients 
        on a.clientid equals c.id into SessionList 
        from c in SessionList.DefaultIfEmpty() 
        select new SessionViewModel() 
        { 

         id = a.id, 
         sessionnotes = a.sessionnotes, 
         firstname = c.firstname, 
         date = a.date, 

        }).ToList(); 


    return View(Sessions); 
} 

但是當我運行它,我得到這個:System.NotSupportedException類型的異常出現在EntityFramework.SqlServer.dll但沒有在用戶代碼中處理。

附加信息:實體或複雜類型fypag.Models.SessionViewModel不能在LINQ to Entities查詢中構造。

+0

你不需要第二'。選擇()' - 你已經創建了一個'名單'(如果你這樣做,那裏面的第二,它的'id = x.id'(不是'a.id'),因爲你使用'.Select(x =>' –

+0

愚蠢的我!顯然不是很好在以下指令:' – AALI93

+0

,但現在我有錯誤:實體或複雜類型'fypag.Models.SessionViewModel'不能在LINQ to Entities查詢中構造。 – AALI93

回答

0

我認爲你的模型應該是這樣的。

var Sessions = (from a in db.Appointments 
          join c in db.Clients 
          on a.clientid equals c.id into SessionList 
          from c in SessionList.DefaultIfEmpty() 
          select new SessionViewModel() 
          { 

           id = a.id, 
           sessionnotes = a.sessionnotes, 
           firstname = c.firstname, 
           date = a.date, 

          }).ToList() 
        .Select(x => new SessionViewModel() 
        { 
         id = x.id, 
         sessionnotes = x.sessionnotes, 
         firstname = x.firstname, 
         date = x.date, 
        }); 

UPDATE:

var Sessions = (from a in db.Appointments 
       join c in db.Clients 
       on a.clientid equals c.id into SessionList 
       from c in SessionList.DefaultIfEmpty() 
       .Select(y => new SessionViewModel() 
       { 
        id = y.id, 
        sessionnotes = y.sessionnotes, 
        firstname = y.firstname, 
        date = y.date, 

       }).ToList(); 
+0

是的,但現在我有一個錯誤:實體或複雜類型'fypag.Models.SessionViewModel'不能在LINQ to Entities查詢中構造。 – AALI93

+0

在Linq-to-Entities中,您只能投影到匿名類型或常規類。您不能投影到現有的實體類型。 –

+0

啊,那我該怎麼辦? – AALI93

相關問題