2013-04-07 103 views
0

我们假设我有3个自定义控制器:AController,BController和CControler以及一个默认HomeController。每个前三控制器对他们有一个非常独特的局部视图,让我们命名他们APartial,BPartial,CPartial而这些被调用时机能缺失,BFunction和CFunction与模板看起来像:asp.NET MVC4在部分视图中使用部分视图

public ActionResult XFunction 
{ 
    /*put some data into a ViewBag*/ 
    return PartialView("XPartial"); 
} 

Respectivelly,APartial。 cshtml,BPartial.cshtml,CPartial.cshtml位于Shared文件夹中。 当HomeController的Index(ActionResult方法)被调用时,在一个页面中返回所有三个视图的最佳方法是什么?我试图呈现每个这样的:

using (StringWriter sw = new StringWriter()) 
{ 
    ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, "XFunction"); 
    ViewContext viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw); 
    viewResult.View.Render(viewContext, sw); 

    return MvcHtmlString.Create(sw.GetStringBuilder().ToString()); 
} 

然后将每个进入ViewBag的动态变量,但我有一种感觉,必须有一个更好的方式解决。

+0

你不能只是把他们所有三个视图? – 2013-04-07 08:22:02

+0

不,我想在其他地方重复使用它们。 – 2013-04-07 08:39:31

+0

我的意思是在另一个视图,呈现所有三个partials像这样:@ Html.Partial('partialview1')@ Html.Partial('partialview2')@ Html.Partial('partialview3') – 2013-04-07 08:43:47

回答