0

假设我有 3 个自定义控制器:AController、BController 和 CControler 以及一个默认 HomeController。前三个控制器中的每一个都有一个非常独特的局部视图,让我们将它们命名为 APartial、BPartial、CPartial,它们通过 AFunction、BFunction 和 CFunction 调用,模板如下所示:

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

APartial.cshtml、BPartial.cshtml、CPartial.cshtml 分别在Shared文件夹中。调用 HomeController 的索引(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 的动态变量中,但我觉得必须有一种更好的解决方案。

4

1 回答 1

1

在您的视图中使用 RenderAction。很好的解释在这里:http ://www.arrangeactassert.com/when-to-use-html-renderpartial-and-html-renderaction-in-asp-net-mvc-razor-views/

于 2013-04-07T08:26:21.040 回答