2012-04-01 116 views
3

我刚刚开始使用ASP.NET - MVC 4构建一个网站,并且我试图围绕它的工作原理包装我的头。部分视图控制器ASP.NET MVC

我想在每个页面上显示一些数据,并且已经了解部分视图对此很有帮助。

是否有可能创建一个总是为局部视图提供数据的控制器?或者我该如何解决这个问题?

回答

8

这就是所谓的儿童行为。

致电Html.Action(...)

+0

会生成额外的请求吗? – johan 2012-04-01 19:43:43

+0

@johan:不。 – SLaks 2012-04-01 19:58:09

2

您可以为局部视图创建控制器操作。但是,如果你正在寻找的每一页上inlcluding一些事情,你应该考虑加入,为您的_Layout.cshtml页面

您可以创建返回这样

public ActionResult UserInfo() 
{ 
    UserViewModel objVm=GetUserInf(); 
    // do some stuff 

return View("PartialUserInfo",objVM); 

} 

的局部视图正常的操作方法这将返回名称为“PartialUserInfo”目前的视图,您Views/Users文件夹中(假设你的控制器名称是用户,如果要指定一个视图这是一个不同的位置调用查看方法

returnView("Partial/UserInfo",objVm); 
的时候可以提到它0

这将在您的Views/Users/Partial文件夹中返回一个名为“UserInfo”的视图。

在你的局部视图,您可以禁用正常布局(如果有的话)由doint这个

@model UserViewModel 
@{ 
    Layout=null; 
} 
0

一种方法是对父视图的模型(一个托管所有的谐音)它包含的属性在其模型中的局部视图模型

EX:

MainModel.ModelForPArtialView1 
MainModel.ModelForPArtialView2 
MainModel.ModelForPArtialView3 

这样,你可以做到这一点父视图

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

解决方案还取决于视图内容是否发生变化。所有父视图中的部分内容是否完全相同? – TGH 2012-04-01 19:45:23