显示来自多个数据库表的数据

时间:2013-12-02 09:28:38

标签: c# asp.net asp.net-mvc entity-framework asp.net-mvc-4

我正在开发一个Index页面,它将更像是一个“Dashboard”类型的页面。在此Dashboard页面中,我想填充多个表中的数据。假设用户XYZ已登录。一旦登录,我想显示来自文章表,新闻表和请求表的数据。

这是我到目前为止所做的:

private dbEntities db = new dbEntities();

public ActionResult Index()
{
    var articles = db.articles.Take(3);
    // var news = db.news.Take(3); - How to display this and requests?
    // var requests = db.requests.Take(3); 
    return View(articles.ToList());
}

@model IEnumerable<GB.Models.articles>

@{
    ViewBag.Title = "Index";
}

<h2>Daskboard</h2>

// Article Info Here

// I would like News/Requests info here

感谢大家的帮助! 非常感谢。

1 个答案:

答案 0 :(得分:1)

超级简单的方法是包装域模型的视图模型:

public class DashboardIndexViewModel {
    public IEnumerable<Article> Articles { get; set; }
    public IEnumerable<News> News { get; set; }
    public IEnumerable<Request> Requests { get; set; }
}

在控制器中填充:

public ActionResult Index() {
    var vm = new DashboardIndexViewModel {
        Articles = db.articles.Take(3),
        News = db.news.Take(3),
        Requests = db.requests.Take(3)
    }

    return View(vm);
}

在视图中,您可以访问每个项目列表:

@model DashboardIndexViewModel
@{
    ViewBag.Title = "Index";
}

<h2>Daskboard</h2>
@foreach (var a in Model.Articles) {
    <p>....</p>
}

@foreach (var n in Model.News) {
    <p>....</p>
}


@foreach (var r in Model.Requests) {
    <p>....</p>
}