2011-04-17 54 views
0

在我的HomeController中Index操作,我想有兩個SQL查詢:MVC 3:多瓦爾

var model = db.Task.Where(n => (n.UserId == UserID) && (n.Completed == false) && (n.Due < dateTime)); 
return View(model); 

var map = db.Events.Where(n => (n.UserId == UserID) && (n.Start < dateTime)); 
return View(map); 

在上面的代碼,第二瓦爾加下劃線的綠色。如何執行這兩個查詢並將結果傳遞到主頁?

非常感謝。

回答

1

您不能從函數返回並期望返回後執行代碼。

確保你有一個模型的視圖,包括所有所需的信息。

例如:

var model = db.Task.Where(n => (n.UserId == UserID) && (n.Completed == false) && (n.Due < dateTime)); 
model.Map = db.Events.Where(n => (n.UserId == UserID) && (n.Start < dateTime)); 
return View(model); 

此代碼不能編譯,除非你有一個Map部件模型中定義。

雖然不是兩次數據庫調用,但更好的方法是將所有數據填入一次調用中。

+0

雖然 – dalehumphries 2011-04-17 18:20:35

+0

@dalehumphries - 我得到一個紅色的線下面的「。地圖」 - 當然你做。您需要更改模型以包含「Map」屬性。我發佈的代碼是說明性的。 – Oded 2011-04-17 18:21:41

0

兩個選擇,要麼創建一個類來保存你的兩個變量:

public class IndexModel { 
    IEnumerable<ModelA> Model { get; set; } 
    IEnumerable<MapMode> Map { get; set; } 
} 

而在你的行動:

return View(new IndexModel{ Model = model, Map = map }); 

或將物品放入視圖的數據包中的一個。

ViewBag.Map = map; 
return View(model);