Where are the ControllerContext and ViewEngines properties in MVC 6 Controller?

后端 未结 4 1297
温柔的废话
温柔的废话 2020-11-28 09:21

I\'ve created a new MVC6 project and building a new site. The goal is to get the rendered result of a view. I found the following code, but I can\'t get it to work because I

4条回答
  •  情话喂你
    2020-11-28 09:48

    Solution by Martin Tomes works well. My changes: removed serviceProvider and get ICompositeViewEngine in constructor via DI. Constructor looks like:

    private readonly ICompositeViewEngine _viewEngine;
    
            public AccountController(
    
                    UserManager userManager,
                    SignInManager signInManager,
                    IEmailSender emailSender,
                    ISmsSender smsSender,
                    ILoggerFactory loggerFactory,
                    ICompositeViewEngine viewEngine)
                {
                    _userManager = userManager;
                    _signInManager = signInManager;
                    _emailSender = emailSender;
                    _smsSender = smsSender;
                    _logger = loggerFactory.CreateLogger();
                    _viewEngine = viewEngine;;
                }
    

    and put

    ViewEngineResult viewResult = _viewEngine.FindView(ControllerContext, viewName, false);
    

    instead of

    var engine = _serviceProvider.GetService(typeof(ICompositeViewEngine)) as ICompositeViewEngine; // Resolver.GetService(typeof(ICompositeViewEngine)) as ICompositeViewEngine;
    ViewEngineResult viewResult = engine.FindView(ControllerContext, viewName, false);
    

提交回复
热议问题