0

我正在尝试触发 Excel 文档的下载。我的控制器返回可下载的文件:

public ActionResult ExportPatchSchedules([Bind(Prefix = "multiSelectDialog")] ExportPatchSchedulesModel model)
{
    MemoryStream memoryStream = WorkflowManager.ExportPatchScheduleReport(model.TaskIDs);

    return File(memoryStream.ToArray(), "application/vnd.ms-excel",
        string.Format(@"Patch Schedule Report {0}.xls", string.Format("{0:yyyy-MM-dd_hh-mm-ss-tt}", DateTime.Now)));
}

为了触发下载,我有以下内容:

$('<iframe>', {
    src: '../Workflow/ExportPatchSchedules/',
    css: {
        display: 'none'
    }
}).appendTo('body');

但是,以前,我使用 AJAX 请求来访问我的控制器的方法:

$.ajax({
    type: "POST",
    url: '../Workflow/ExportPatchSchedules',
    data: formData
});

其中 formData 是 ExportPatchSchedulesModel 的序列化表示。

当我被限制设置 src 时,我正在努力将我的模型发送到 ExportPatchSchedules。是否可以通过这种方式发送我的模型?如果没有..这通常是怎么做的?

4

1 回答 1

2

尝试使用属性设置为your的 html form,例如:targetnameiframe

<iframe style="display: none;" id="myIframe" name="myIframe"></iframe>

var f = document.createElement("form");
f.method = "POST";
f.action = "../Workflow/ExportPatchSchedules";
f.target = "myIframe";
f.enctype = "application/x-www-form-urlencoded"; // not sure about this since you didn't mention

var input = document.createElement('input');
input.type = "hidden";
input.name = "model";
input.value = "...." // your data here, not sure about it since you didn't mention

f.appendChild(input);
f.submit();
于 2013-06-02T21:14:13.257 回答