В настоящее время в моем приложении есть раздел, который с помощью вызова 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();
}
}