使用MVC2,我在视图中使用Ajax helper创建了一个表单。表单发布到绑定到模型对象的控制器。控制器返回一个PartialViewResult,并将其更新到div中。到现在为止还好。
现在,我需要提交相同的表单,并在生成的文件中返回结果供用户下载。显然,我不希望文件内容进入我的div。
有没有一种优雅的方法来处理这种情况,而不需要把它砍成碎片?我是MVC / AJAX的新手,对我来说这仍然是一个困惑的问题。
发布于 2012-02-10 22:11:56
好吧,我在任何地方都找不到任何简单的解决方案,所以我想出了我自己的解决方案。当我需要下载时,我从表单中删除了Ajax事件处理程序,当我需要Ajax时,我把它们放回去了。我猜有一种更优雅的方式来做到这一点,因为这感觉像是一个“聪明的把戏”。我对更好的建议持开放态度,但到目前为止,这是我首选的方法。
在我的页面上引用ToggleAjax.js:
var ToggleAjax = function ($, form) {
var onclick = form.onclick,
onsubmit = form.onsubmit;
$('input[class*="ajax-enabled"]').click(function () {
form.onclick = onclick;
form.onsubmit = onsubmit;
});
$('input[class*="ajax-disabled"]').click(function () {
form.onclick = function () { };
form.onsubmit = function () { };
});
};
然后,我在我的页面上调用ToggleAjax
并传入表单:
$(function () {
ToggleAjax($, $('form')[0]);
});
当然,我还向输入控件添加了ajax-enabled
或ajax-disabled
类。
发布于 2012-02-10 16:36:34
您不能使用ajax调用来下载文件。下面的链接可能会帮助你做你正在尝试做的事情,JQuery Ajax call for PDF file download
http://forums.asp.net/t/1683990.aspx/1
https://stackoverflow.com/questions/9222722
复制相似问题