0

有没有更好的方法通过 return View() 在 MVC 中显示来自多个源的数据?

我基本上调用了两个不同的来源,然后填写了一个可以组合结果的公共集合。只是想知道我是否可以返回两个数据对象而不必组合它们?

任何建议,将不胜感激。

谢谢,

小号

4

2 回答 2

2

通常使用可以保存多个集合或其他类型的ViewModel来传递给您的视图。

如果您不想要/不需要强类型视图,您也可以使用 ViewBag 或 ViewData 将多个集合传递给您的视图:

public ActionResult Index()
{
    ViewData["GratuitousGuid"] = Guid.NewGuid();

    ViewBag.Products = ProductService.GetProducts();
    ViewBag.Countries = CountryService.GetCountries();
    ViewBag.Zombies = ZombieService.GetZombies();

    return View();
}
于 2012-07-31T01:38:32.390 回答
1

您可以使用多个操作将不同的源呈现为PartialViews,然后将它们放在一个整体中View

例子:

家庭控制器.cs

public ActionResult Foo() {
    return PartialView(repository.GetFoo());
}

public ActionResult Bar() {
    return PartialView(repository.GetBar());
}

public ActionResult Index() {
    return View();
}

索引.cshtml

<div id='foo'>
    @Html.Action("Foo")
</div>

<div id='bar'>
    @Html.Action("Bar")
</div>

Foo.cshtml 和 Bar.cshtml 将是显示每个模型数据的 PartialViews。

附录

我喜欢这种方式的另一个原因是它非常适合 AJAX 更新。例如,如果需要在页面上更新 Bar 部分,那么您可以使用 jQuery 编写:

$('#bar').load('/home/bar', function (html) {
    //Set up your returned data here (callbacks and the like)
});

无需执行完全刷新

于 2012-07-31T01:39:55.140 回答