有没有更好的方法通过返回View()来显示来自MVC中多个源的数据?
我基本上打电话给两个不同的来源,然后填写一个共同的集合,我可以结合结果。只是想知道我是否可以返回两个数据对象而不必将它们组合起来?
任何建议都将不胜感激。
感谢,
取值
答案 0 :(得分: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();
}
答案 1 :(得分:1)
您可以使用多个操作将不同来源呈现为PartialView
,然后将它们整合在一起View
示例:
HomeController.cs
public ActionResult Foo() {
return PartialView(repository.GetFoo());
}
public ActionResult Bar() {
return PartialView(repository.GetBar());
}
public ActionResult Index() {
return View();
}
Index.cshtml
<div id='foo'>
@Html.Action("Foo")
</div>
<div id='bar'>
@Html.Action("Bar")
</div>
Foo.cshtml和Bar.cshtml将是显示每个模型数据的PartialView。
<强>附录强>
我喜欢这种方式的另一个原因是它非常适合AJAX更新。例如,如果需要在页面上更新Bar部分,那么您可以使用jQuery编写:
$('#bar').load('/home/bar', function (html) {
//Set up your returned data here (callbacks and the like)
});
无需执行完全刷新