图像 header 具有 rotativa 和 null 布局
Image header with rotativa and null layout
我最近开始使用 Rotativa,它很棒,但是今天,我尝试在我的 pdf 中添加一个 header,它没有问题,但是 header 是使用 _layout.cshtml
,当我尝试使用 Layout = null
删除它或将 header 呈现为 PartialView
而不是 View
时,它只显示一个空页面。
这就是我的工作方式
public ActionResult Print(string CodigoDelfos, int Revision, string Versiones)
{
//Create the url for the header (Test action)
UriBuilder u = new UriBuilder(Request.Url.AbsoluteUri)
{
Path = Url.Action("Test", "Home", null),
Query = null
};
//Format the header to read Test.cshtml file
string t = string.Format("--header-html {0}", u.Uri.ToString());
//The action i'll use to create the pdf
return new Rotativa.ActionAsPdf(nameof(ImprimirDetalleDistribucion), new
{
CodigoDelfos,
Revision,
Versiones
})
{
CustomSwitches = t
};
}
然后 Test.cshtml
文件
<div class="container">
<img src="~/Content/Images/CabeceraGarantizados.jpg" class="img-fluid" />
</div>
如果我将其渲染为 View()
(使用默认布局渲染),它可以正常工作,但如果我将其渲染为 PartialView()
,则 pdf 结果为 blank
,与如果我使用 Layout = null
为什么会这样?
显然 Rotary 需要文件定义 DOCTYPE
解决方法就是添加DOCTYPE
Test.cshtml
@{ Layout = null; }
<!DOCTYPE html>
<div class="container">
<img src="~/Content/Images/CabeceraGarantizados.jpg" class="img-fluid" />
</div>
我最近开始使用 Rotativa,它很棒,但是今天,我尝试在我的 pdf 中添加一个 header,它没有问题,但是 header 是使用 _layout.cshtml
,当我尝试使用 Layout = null
删除它或将 header 呈现为 PartialView
而不是 View
时,它只显示一个空页面。
这就是我的工作方式
public ActionResult Print(string CodigoDelfos, int Revision, string Versiones)
{
//Create the url for the header (Test action)
UriBuilder u = new UriBuilder(Request.Url.AbsoluteUri)
{
Path = Url.Action("Test", "Home", null),
Query = null
};
//Format the header to read Test.cshtml file
string t = string.Format("--header-html {0}", u.Uri.ToString());
//The action i'll use to create the pdf
return new Rotativa.ActionAsPdf(nameof(ImprimirDetalleDistribucion), new
{
CodigoDelfos,
Revision,
Versiones
})
{
CustomSwitches = t
};
}
然后 Test.cshtml
文件
<div class="container">
<img src="~/Content/Images/CabeceraGarantizados.jpg" class="img-fluid" />
</div>
如果我将其渲染为 View()
(使用默认布局渲染),它可以正常工作,但如果我将其渲染为 PartialView()
,则 pdf 结果为 blank
,与如果我使用 Layout = null
为什么会这样?
显然 Rotary 需要文件定义 DOCTYPE
解决方法就是添加DOCTYPE
Test.cshtml
@{ Layout = null; }
<!DOCTYPE html>
<div class="container">
<img src="~/Content/Images/CabeceraGarantizados.jpg" class="img-fluid" />
</div>