.NET Core 2.2 Рендеринг cshtml в виде строки - PullRequest
1 голос
/ 28 марта 2019

У меня есть этот файл cshtml, расположенный по этому пути

"~/Areas/Services/Views/Quotations/SpecificForms/PC/PCReceipts.cshtml"

Я пытаюсь отобразить это как строку и передать ей модель представления.

В настоящее время я использую RazorLight v1.1.0 от Nuget, и это то, что я пробовал до сих пор:

var tempatePath = "~/Areas/Services/Views/Quotations/SpecificForms/PC/PCReceipts.cshtml";
IRazorLightEngine engine = EngineFactory.CreatePhysical(templatePath);

Однако, когда я запускаю его, я получаю сообщение об ошибке, что мне требуетсяабсолютный путь вместоКак я могу преобразовать то, что у меня есть, в абсолютный путь?Если я дам ему абсолютный путь, то, когда я скомпилирую и запущу программу, не исчезнет ли абсолютный путь?

1 Ответ

1 голос
/ 28 марта 2019

Введите IHostingEnvironment и используйте _env.ContentRootPath:

public class FooController : Controller
{
    private readonly IHostingEnvironment _env;

    public FooController(IHostingEnvironment env)
    {
        _env = env;
    }

    public IActionResult FooAction()
    {
        var tempatePath = Path.Combine(_env.ContentRootPath, "Areas/Services/Views/Quotations/SpecificForms/PC/PCReceipts.cshtml");
        IRazorLightEngine engine = EngineFactory.CreatePhysical(templatePath);

        ...
    }
}
...