我正在开发mvc核心应用程序,我需要将视图转换为pdf。
为此,我在Rotativa.NetCore
中找到NugGet Pakages
。
但它不起作用。
public class TestViewModel
{
public int DocId { get; set; }
public string DocContent { get; set; }
}
public class RotativaController : Controller
{
public ActionResult Index()
{
ViewBag.Message = string.Format("Hello to ASP.NET MVC Core!");
return View();
}
//Convert Index View To PDF
public ActionResult PrintIndex()
{
return new ActionAsPdf("Index");
} //Not working.
//Convert TestViewModel Model To PDF
public ActionResult PrintTestViewModel()
{
List<TestViewModel> _list = new List<TestViewModel>();
_list.Add(new TestViewModel { DocId = 1, DocContent = "Content 1" });
_list.Add(new TestViewModel { DocId = 2, DocContent = "Content 2" });
_list.Add(new TestViewModel { DocId = 3, DocContent = "Content 3" });
_list.Add(new TestViewModel { DocId = 4, DocContent = "Content 4" });
_list.Add(new TestViewModel { DocId = 5, DocContent = "Content 5" });
return new ViewAsPdf(_list);
} //Not working.
}
通过例外
TypeLoadException: Could not load type 'Microsoft.AspNetCore.Builder.CookieAuthenticationOptions' from assembly 'Microsoft.AspNetCore.Authentication.Cookies, Version=2.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'.
答案 0 :(得分:0)
解决方案很简单。
此时当前分支处于.NetCoreApp 1.0。
有一个拉取请求等待将.netcore更新为2.0。
一个简单的解决方法是下载解决方案,卸载项目并更新以下行:
<TargetFrameworks>netcoreapp2.0</TargetFrameworks>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Authentication.Cookies" Version="2.0.0" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.0.0" />
</ItemGroup>
之后,重新加载项目,使用 CookieAuthenticationOptions 来解决问题,就是这样。
答案 1 :(得分:0)
CookieAuthenticationOptions类仅适用于NetCore 1.x而不适用于NetCore 2.0。
要让Rotativa.NetCore在NetCore 2.0上运行,您需要从GitHub下载Rotativa.NetCore源代码:https://github.com/aaxelm/Rotativa.NetCore,进行此处列出的更改:https://github.com/aaxelm/Rotativa.NetCore/pull/1/files?diff=split然后将此项目添加为Visual Studio中的解决方案的现有项目。
答案 2 :(得分:-1)
您必须在“索引”操作中使用[AllowAnonymous]。 否则在ActionAsPdf中设置FormsAuthenticationCookieName和Cookies属性。