我在控制器中的下载报告操作
public FileContentResult DownloadReport(string cityString, string areaString, string subareaString, string businessString, string format)
{
LocalReport report = new LocalReport();
report.ReportPath = Server.MapPath("~/Reports/MemberReport.rdlc");
ReportDataSource rd = new ReportDataSource();
rd.Name = "DataSet1";
if (cityString != null || areaString != null || subareaString != null || businessString != null)
{
var c = GetMem();
var cd = "query which return a list from variable c"
rd.Value = cd.ToList();
}
else
{
rd.Value = GetMem();
}
report.DataSources.Add(rd);
string reportType = format;
string mimeType;
string encoding;
string fileNameExtension;
//string deviceInfo = "<DeviceInfo>" + "<OutputFormat>" + format + "</OutputFormat>" + "<PageWidth>8.5in</PageWidth>" + "<PageHeight>11in</PageHeight>" + "<MarginTop>0.5in</MarginTop>" + "<MarginLeft>0.5in</MarginLeft>" + "<MarginRight>0.5in</MarginRight>" + "<MarginBottom>0.5in</MarginBottom>" + "</DeviceInfo>";
string deviceInfo = "<DeviceInfo>" +
" <OutputFormat>+ format +</OutputFormat>" +
" <PageWidth>8.5in</PageWidth>" +
" <PageHeight>9in</PageHeight>" +
" <MarginTop>0.5in</MarginTop>" +
" <MarginLeft>0.3in</MarginLeft>" +
" <MarginRight>0.3in</MarginRight>" +
" <MarginBottom>0.5in</MarginBottom>" +
"</DeviceInfo>";
Warning[] warnings;
string[] streams;
byte[] renderedBytes;
renderedBytes = report.Render(
reportType,
deviceInfo,
out mimeType,
out encoding,
out fileNameExtension,
out streams,
out warnings);
if (format == null)
{
return File(renderedBytes, "pdf");
}
else if (format == "pdf")
{
return File(renderedBytes, "pdf");
}
else
{
return File(renderedBytes, mimeType);
}
}
我的观点
using (Html.BeginForm("MemberReport","MemberReportList",new { ReturnUrl = ViewBag.ReturnUrl }))
{
<div class="row">
<div class="col-md-1">
@Html.Label("CIty")
</div>
<div class="col-md-2">
"TextBox for citystring"
</div>
<div class="col-md-1">
@Html.Label("Area")
</div>
<div class="col-md-2">
Textbox for area
</div>
<div class="col-md-1">
@Html.Label("Sub Area")
</div>
<div class="col-md-2">
Subarea textbox
</div>
<div class="col-md-1">
@Html.Label("BusinessType")
</div>
<div class="col-md-2">
BusinessType Textbox
</div>
<div class="col-md-2">
<input type="submit" value="View" class="btn btn-primary" />
</div>
</div>
}
@if (Model != null)
{
<div class="col-md-2 col-md-offset-8">
@Html.ActionLink("Download as PDF", "DownloadReport", new { cityString = Model.CityString, areaString = Model.AreaString, subareaString = Model.SubAreaString, businessString = Model.BusinessString, format = "PDF" }, new { @class = "btn btn-primary" })
</div>
<div class="col-md-2">
@Html.ActionLink("Download as Excel", "DownloadReport", new { cityString = Model.CityString,areaString = Model.AreaString, subareaString = Model.SubAreaString, businessString = Model.BusinessString, format = "Excel" }, new { @class = "btn btn-primary" })
</div>
<br />
<br />
<iframe src='@Url.Action("DownloadReport", "MemberReportList", new { cityString = Model.CityString, areaString = Model.AreaString, subareaString = Model.SubAreaString, businessString = Model.BusinessString, format = "PDF" })' width="100%" height="1000"></iframe>
}
我的问题是它在本地完美运行..但不是在服务器上
在服务器上“iframe”返回我网站的标题,“下载为 Pdf 和 Excel”返回空视图