Альтернатива ViewEngineCollection в ядре asp.net? - PullRequest
0 голосов
/ 17 мая 2018

Я мигрирую приложение Asp.Net MVC в Asp.Net Core.

Я наткнулся на эту строку кода:

if (this.ViewEngineCollection.FindView(this.ControllerContext, viewPath, null).View != null)
{
    return this.View(viewPath);
}

Я не смог найти альтернативный способвыполнение ViewEngineCollection.FindView в ядре asp.net.

Цените любую помощь.

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Я получил решение, благодаря Хенку Моллеме .

  • Класс контроллера
public class NewsController : Controller
{
    private readonly IRazorViewEngine _razorViewEngine;
    private readonly IActionContextAccessor _actionContextAccessor;

    public NewsController(IRazorViewEngine razorViewEngine, IActionContextAccessor actionContextAccessor)
    {
        _razorViewEngine = razorViewEngine;
        _actionContextAccessor = actionContextAccessor;
    }

    public IActionResult Index()
    {   
        var gotView = _razorViewEngine.GetView(string.Empty, viewName, true);

        if (gotView.Success)   //gets true
        {
            return View(viewName);
        }
        return NotFound();
    }
}

* startup.cs

public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton<IActionContextAccessor, ActionContextAccessor>();
    services.AddMvc();
}

То же самое можно найти на GitHub здесь .

0 голосов
/ 17 мая 2018

Вы можете внедрить экземпляр IRazorViewEngine, используя внедрение зависимостей, и вызвать FindView. Вы должны передать ActionContext экземпляр, а не ControllerContext, используя этот интерфейс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...