我正在尝试将HTML视图用于string rendering class i found online。它被称为PDFRender atm,因此它将被用于它。我被告知它使用依赖注入设置它应该开箱即用。
我不知道如何实例化它。因为依赖项应该通过构造函数注入。
我的类构造函数看起来像这样
public PdfRender(IRazorViewEngine viewEngine, ITempDataProvider tempDataProvider, IServiceProvider serviceProvider)
{
_viewEngine = viewEngine;
_tempDataProvider = tempDataProvider;
_serviceProvider = serviceProvider;
}
我在启动类ConfigureMetod()中设置了这个
// Set up Report PDF html renderer
services.AddScoped<PdfRender, PdfRender>();
现在我在我的代码中尝试这个(在查看链接示例之后)
PdfRender pdfRender;
string iWantToBetml = pdfRender.ModelToHTML(inspection);
但我得到一个错误(当然)说我不能使用未分配的变量。我想我不明白DI应该如何使用。我假设这个想法是给出默认的viewEngine,dataProvider和serviceProviders。
答案 0 :(得分:0)
您只需要在控制器的构造函数中添加PdfRender
参数:
public PdfRender(PdfRender pdfRender, IRazorViewEngine viewEngine, ITempDataProvider tempDataProvider, IServiceProvider serviceProvider)
{
_pdfRender = pdfRender;
_viewEngine = viewEngine;
_tempDataProvider = tempDataProvider;
_serviceProvider = serviceProvider;
}
然后您可以在该控制器上的实例方法中使用
public SomeMethod(){
string iWantToBetml = _pdfRender.ModelToHTML(inspection);
}
请注意,在您的控制器构造函数中,您不一定需要指定所有这些参数,只需指定类所需的参数,然后将从DI容器中注入这些参数,前提是它们的类型已经注册了DI容器启动时。