我目前在我的应用程序中有一个部分,该部分使用Ajax调用返回HTML,这基本上是部分视图,该视图被转换为字符串。这很完美。我在下面包含了有关如何实现此目标的代码。我的问题是,我现在处于这种情况下,在某些情况下现在需要局部视图本身。
这是我下面的方法失败的地方,它只返回一个空白字符串。我删除了一行以渲染部分视图,并且第一个部分视图正确地渲染为字符串。
在将部分视图呈现为字符串的方法中呈现部分视图似乎不起作用。
关于如何解决此问题的任何想法?
我的代码将部分视图呈现为字符串
public static string RenderViewToString<TModel>(this Controller controller, string viewName, TModel model, bool partial = false)
{
if (string.IsNullOrEmpty(viewName)) viewName = controller.ControllerContext.ActionDescriptor.ActionName;
controller.ViewData.Model = model;
using (var writer = new StringWriter())
{
IViewEngine viewEngine =
controller.HttpContext.RequestServices.GetService(typeof(ICompositeViewEngine)) as
ICompositeViewEngine;
var viewResult = viewEngine.FindView(controller.ControllerContext, viewName, !partial);
if (viewResult.Success == false) return $"A view with the name {viewName} could not be found";
var viewContext = new ViewContext(
controller.ControllerContext,
viewResult.View,
controller.ViewData,
controller.TempData,
writer,
new HtmlHelperOptions()
);
viewResult.View.RenderAsync(viewContext);
return writer.GetStringBuilder().ToString();
}
}