Обязательные зависимости для Resolver или ServiceProvider для использования ICompositeViewEngine
Я пытаюсь использовать ICompositeViewEngine в ASP.NET Core MVC для замены ViewEngine из System.Web.Mvc, поскольку он больше не доступен в .NET Core. Я обычно пытаюсь перенести веб-форму из ASP.NET в ASP.NET Core в этом проекте.
Я нашел следующее решение:Где находятся свойства ControllerContext и ViewEngines в MVC 6 Controller? и я верю, что это может решить мою проблему. Я также нашел аналогичное создание движка с ServiceProvider в вопросе github:https://github.com/aspnet/Mvc/issues/3091
Тем не менее, я не уверен, какие зависимости или структуры мне могут не хватать, так как я очень новичок в .NET. У меня есть следующие пространства имен:
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.ViewEngines;
using Microsoft.AspNetCore.Mvc.ViewFeatures;
using Microsoft.Extensions.DependencyInjection;
Я верю, что это может быть связано с моей проблемой.
Мой оригинальный код:
public static string RenderPartialToString(Controller controller, string viewName, object model)
{
controller.ViewData.Model = model;
using (StringWriter sw = new StringWriter())
{
ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(controller.ControllerContext, viewName);
ViewContext viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, sw);
viewResult.View.Render(viewContext, sw);
return "document.write('" + sw.GetStringBuilder().Replace('\n', ' ').Replace('\r', ' ').Replace("'","\\'").ToString() + "');";
}
}
И теперь я пытаюсь использовать одно из следующих:
var engine = Resolver.GetService(typeof(ICompositeViewEngine)) as ICompositeViewEngine;
var engine2 = IServiceProvider.GetService(typeof(ICompositeViewEngine)) as ICompositeViewEngine;
Я на правильном пути, чтобы это исправить? Есть ли более простой способ заменить System.Web.Mvc ViewEngines в .NET Core? Что мне нужно исправить "не существует в текущем контексте"ошибки для Resolver и / или ServiceProvider?
Благодарю. Я надеюсь, что смог следовать принципам вопроса.
Изменить: Пожалуйста, дайте мне знать, если я должен включить что-нибудь еще из моего кода для этого вопроса. В настоящее время я читаю о внедрении зависимости, чтобы лучше понять ситуацию.