【发布时间】:2012-04-15 14:15:00
【问题描述】:
我最近刚刚开始使用 ASP.NET - MVC 4 构建一个网站,我试图弄清楚它是如何工作的。
我想在每个页面上显示一些数据,并且我知道部分视图非常适合。
是否可以创建一个始终为局部视图提供数据的控制器?或者我该如何解决?
【问题讨论】:
标签: asp.net-mvc
我最近刚刚开始使用 ASP.NET - MVC 4 构建一个网站,我试图弄清楚它是如何工作的。
我想在每个页面上显示一些数据,并且我知道部分视图非常适合。
是否可以创建一个始终为局部视图提供数据的控制器?或者我该如何解决?
【问题讨论】:
标签: asp.net-mvc
这称为子动作。
致电Html.Action(...)。
【讨论】:
您可以为局部视图创建控制器操作。但是,如果您正在寻找在每个页面上包含一些内容,您应该考虑将其添加到您的 _Layout.cshtml 页面中
您可以创建一个正常的操作方法,该方法返回像这样的局部视图
public ActionResult UserInfo()
{
UserViewModel objVm=GetUserInf();
// do some stuff
return View("PartialUserInfo",objVM);
}
这将返回一个名称为“PartialUserInfo”的视图存在于您的Views/Users 文件夹中(假设您的控制器名称是用户。如果您想指定一个不同位置的视图,您可以在调用视图时提及它方法
returnView("Partial/UserInfo",objVm);
这将在您的Views/Users/Partial 文件夹中返回一个名为“UserInfo”的视图。
在您的局部视图中,您可以通过这样做禁用正常布局(如果有的话)
@model UserViewModel
@{
Layout=null;
}
【讨论】:
一种方法是为父视图(托管所有局部视图的模型)创建一个模型,其中包含局部视图的模型作为其模型的属性
前:
MainModel.ModelForPArtialView1
MainModel.ModelForPArtialView2
MainModel.ModelForPArtialView3
这样你就可以在父视图上做到这一点
@Html.Partial("PartialView1",MainModel.ModelForPArtialView1)
@Html.Partial("PartialView2",MainModel.ModelForPArtialView2)
@Html.Partial("PartialView3",MainModel.ModelForPArtialView3)
【讨论】: