C# 在MVC4中显示字节[]中的PDF
我正在使用Grid.MVC显示实体模型中的数据。在单击行时,我获取单元格的值,并使用json/ajax函数将其传递给我的控制器 在我的控制器中,int“ticketnumber”通过得很好。我不明白的是,当我硬编码int时,它正在工作(如果我直接浏览到) 控制器似乎运行得很好,但它没有显示PDF。它只是用ajax脚本将我带回视图中的网格。谢谢你的帮助 编辑-代码:C# 在MVC4中显示字节[]中的PDF,c#,ajax,asp.net-mvc,pdf,C#,Ajax,Asp.net Mvc,Pdf,我正在使用Grid.MVC显示实体模型中的数据。在单击行时,我获取单元格的值,并使用json/ajax函数将其传递给我的控制器 在我的控制器中,int“ticketnumber”通过得很好。我不明白的是,当我硬编码int时,它正在工作(如果我直接浏览到) 控制器似乎运行得很好,但它没有显示PDF。它只是用ajax脚本将我带回视图中的网格。谢谢你的帮助 编辑-代码: <script> $(function () { pageGrids.
<script>
$(function () {
pageGrids.TicketGrid.onRowSelect(function (e) {
var ticketnumber = e.row.UnsettledID;
ticketnumber = JSON.stringify({ 'ticketnumber': ticketnumber });
$.ajax({
contentType: 'application/json; charset=utf-8',
dataType: 'json',
type: 'POST',
url: '/ticket/PDFVIEW',
data: ticketnumber,
});
});
});
</script>
您不能使用AJAX以这种方式下载文件。您的AJAX代码正在获取PDF的内容,但您的浏览器需要将其作为普通请求接收才能查看。相反,您应该呈现一个指向PdfView操作的链接,或者如果需要从Javascript事件处理程序执行此操作,请使用
window.setLocation
注意,您还需要更改操作方法以接受HttpGet。您不能使用AJAX以这种方式下载文件。您的AJAX代码正在获取PDF的内容,但您的浏览器需要将其作为普通请求接收才能查看。相反,您应该呈现一个指向PdfView操作的链接,或者如果需要从Javascript事件处理程序执行此操作,请使用
window.setLocation
注意,您还需要更改您的操作方法以接受HttpGet。使用Richard所说的帮助很大 我的Json已更改为:
<script>
$(function pdfviewer() {
pageGrids.TicketGrid.onRowSelect(function (e) {
var ticketnumber = e.row.UnsettledID;
ticketnumber = JSON.stringify({ 'ticketnumber': ticketnumber });
$.ajax({
contentType: 'application/json; charset=utf-8',
dataType: 'json',
type: 'POST',
url: '/ticket/PDFVIEW',
data: ticketnumber,
success: function (d) {
if (d.success) {
window.location = "/Ticket/DownloadFile" + "?fName=" + d.fName;
}
},
error: function () {
alert("Error");
}
});
});
});
</script>
多谢各位 用理查德说的话帮了大忙 我的Json已更改为:
<script>
$(function pdfviewer() {
pageGrids.TicketGrid.onRowSelect(function (e) {
var ticketnumber = e.row.UnsettledID;
ticketnumber = JSON.stringify({ 'ticketnumber': ticketnumber });
$.ajax({
contentType: 'application/json; charset=utf-8',
dataType: 'json',
type: 'POST',
url: '/ticket/PDFVIEW',
data: ticketnumber,
success: function (d) {
if (d.success) {
window.location = "/Ticket/DownloadFile" + "?fName=" + d.fName;
}
},
error: function () {
alert("Error");
}
});
});
});
</script>
多谢各位 请在此处复制并粘贴您的代码,而不是发布屏幕截图。不在此处,请更新您的问题。请在此处复制并粘贴您的代码,而不是发布屏幕截图。不在此处,请更新您的问题。这非常有帮助。这非常有帮助。
[ActionName("PDFVIEW")]
public ActionResult pdf(int ticketnumber)
{
var db = new ScaleTrac_VerticalEntities();
Ticket_UnsettledScaleImages tu = new Ticket_UnsettledScaleImages();
tu = db.Ticket_UnsettledScaleImages.Where(p => p.UnsettledID == ticketnumber).First();
string filename = "ScaleTick" + tu.UnsettledID + ".pdf";
{
byte[] bytes = tu.ScaleTicket;
TempData["bytes"] = bytes;
Response.Clear();
MemoryStream ms = new MemoryStream(bytes);
var fName = string.Format("File-{0}.pdf", DateTime.Now.ToString("s"));
Session[fName] = ms;
return Json(new { success = true, fName }, JsonRequestBehavior.AllowGet);
}
}
public ActionResult DownloadFile(string fName)
{
var ms = Session[fName] as MemoryStream;
if (ms == null)
return new EmptyResult();
Session[fName] = null;
return File(ms, "application/pdf", fName);
}