MVC 3:多个Vars

时间:2011-04-17 18:15:18

标签: asp.net-mvc-3

在我的HomeController Index操作中,我想要两个SQL查询:

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);

在上面的代码中,第二个Var带有绿色下划线。如何执行这两个查询并将结果传递到主页?

非常感谢。

2 个答案:

答案 0 :(得分: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成员,否则此代码将无法编译。

虽然不是两次DB调用,但更好的方法是在一次调用中填充所有数据。

答案 1 :(得分: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);