首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >罗塔蒂瓦BuildFile没有击中行动方法

罗塔蒂瓦BuildFile没有击中行动方法
EN

Stack Overflow用户
提问于 2021-06-01 20:53:29
回答 1查看 123关注 0票数 1

我的Controller类中有两种操作方法:

view

  • SaveAsPDF:调用
  1. DetailsAll :获取一些数据和显示,它应该将DetailsAll视图保存为pdf

我的问题是SaveAsPDF动作方法。在这里,我尝试使用Rotativa ActionAsPdf以及随后的BuildFile方法来生成和保存PDF。但是,在执行"BuildFile“行时,它没有击中我的DetailsAll操作方法中的断点,从而导致生成该PDF为空白。

你能帮我找出问题所在吗?

代码语言:javascript
复制
    [HttpGet]
    public ActionResult DetailsAll()
    {
        var selectionBuilder = builderFactory.GetGeocodeReportSelectionViewModelBuilder();
        var companyList = selectionBuilder.Build();

        List<GeocodeReportViewModel> viewModel = new List<GeocodeReportViewModel>();
        foreach(SelectListItem record in companyList.Companies)
        {
            var builder = builderFactory.GetGeocodeReportViewModelBuilder(int.Parse(record.Value));
            viewModel.Add(builder.Build());
        }
        var model = new AllGeocodeReportViewModel
        {
            GeocodeReports = viewModel
        };
        return View(model);
    }

    [HttpGet]
    public string SaveAsPDF()
    {
        var report = new ActionAsPdf("DetailsAll")
        {
            FileName = "OEM_GeocodeReport_" + System.DateTime.Now.ToString("MMYY") + ".pdf",
            PageSize = Size.A4,
            PageOrientation = Orientation.Landscape,
            PageMargins = { Left = 1, Right = 1 }
        };
        byte[] pdf = report.BuildFile(ControllerContext);
        System.IO.File.WriteAllBytes("C:\\" + report.FileName, pdf);
        return "true";
    }
EN

回答 1

Stack Overflow用户

发布于 2021-06-02 16:04:30

经过广泛的搜索,终于发现了这个问题。我需要发送身份验证cookie以及BuildFile请求,这样才能正常工作。添加了以下代码,现在它正确地生成了PDF:

代码语言:javascript
复制
 public void SaveAsPDF()
    {
        var cookies = Request.Cookies.AllKeys.ToDictionary(k => k, k => Request.Cookies[k].Value);
        var report = new ActionAsPdf("DetailsAll")
        {
            FileName = "OEM_GeocodeReport_" + System.DateTime.Now.ToString("MMyy") + ".pdf",
            PageSize = Size.A4,
            PageOrientation = Orientation.Portrait,
            PageMargins = { Left = 3, Right = 3 },
            FormsAuthenticationCookieName = System.Web.Security.FormsAuthentication.FormsCookieName,
            Cookies = cookies
        };
        byte[] pdf = report.BuildFile(ControllerContext);
        System.IO.File.WriteAllBytes("C:\\" + report.FileName, pdf);            
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67795872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档