ASP.NET MVC的局部视图控制器

3

我最近刚开始使用ASP.NET - MVC 4构建网站,正在努力理解它的工作原理。

有一些数据我想在每个页面上显示,并且了解到Partial Views非常适合此类情况。

是否可以创建一个控制器,始终为Partial View提供数据?或者我该如何解决这个问题?

3个回答

8
那被称为子操作。 调用 Html.Action(...)

那会生成额外的请求吗? - johan

2
您可以为局部视图创建一个控制器操作。但如果您希望在每个页面上包含某些内容,则应考虑将其添加到您的_Layout.cshtml页面中。
您可以创建一个普通的操作方法,返回一个局部视图,如下所示:
public ActionResult UserInfo()
{
  UserViewModel objVm=GetUserInf();
  //  do some stuff

 return View("PartialUserInfo",objVM);

}

这将返回一个视图,名称为"PartialUserInfo",位于Views/Users文件夹中(假设您的控制器名称为Users)。如果您想指定不同位置的视图,可以在调用View方法时提及。
returnView("Partial/UserInfo",objVm);

这将返回一个名为“UserInfo”的视图,位于您的Views/Users/Partial文件夹中。
在您的局部视图中,您可以通过执行以下操作禁用正常布局(如果有):
@model UserViewModel 
@{
  Layout=null;
}

0
一种方法是为父视图(托管所有部分视图的视图)创建一个模型,该模型将包含作为其模型属性的部分视图的模型。
例如:
MainModel.ModelForPArtialView1
MainModel.ModelForPArtialView2
MainModel.ModelForPArtialView3

这样你就可以在父视图上执行此操作

@Html.Partial("PartialView1",MainModel.ModelForPArtialView1)
@Html.Partial("PartialView2",MainModel.ModelForPArtialView2)
@Html.Partial("PartialView3",MainModel.ModelForPArtialView3)

解决方案还取决于内容是否在视图之间发生变化。部分的内容在所有父视图中是否完全相同? - TGH

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接