有没有更好的方法通过 return View() 在 MVC 中显示来自多个源的数据?
我基本上调用了两个不同的来源,然后填写了一个可以组合结果的公共集合。只是想知道我是否可以返回两个数据对象而不必组合它们?
任何建议,将不胜感激。
谢谢,
小号
有没有更好的方法通过 return View() 在 MVC 中显示来自多个源的数据?
我基本上调用了两个不同的来源,然后填写了一个可以组合结果的公共集合。只是想知道我是否可以返回两个数据对象而不必组合它们?
任何建议,将不胜感激。
谢谢,
小号
通常使用可以保存多个集合或其他类型的ViewModel来传递给您的视图。
如果您不想要/不需要强类型视图,您也可以使用 ViewBag 或 ViewData 将多个集合传递给您的视图:
public ActionResult Index()
{
ViewData["GratuitousGuid"] = Guid.NewGuid();
ViewBag.Products = ProductService.GetProducts();
ViewBag.Countries = CountryService.GetCountries();
ViewBag.Zombies = ZombieService.GetZombies();
return View();
}
您可以使用多个操作将不同的源呈现为PartialView
s,然后将它们放在一个整体中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)
});
无需执行完全刷新