希望我能清楚地说明这一点。
我在MVC4页面中使用ajaxform来发送使用的CSV文件
$(function () {
function showResponse(responseText, statusText, xhr, $form) {
$('#loadedData').html(responseText);
}
var options = {
target: "#loadedData",
success: showResponse
};
$("#form0").ajaxForm(options);
});
然后将文件和映射的标题发送到另一个执行处理的Controller Action,我有一个RedirectToAction(“Index”),我想在完成时重定向整个页面。
奇怪的是,作为我的ajaxform结果目标的div被重定向到索引。所以我最终在浏览器中的上传页面和#loadedData具有索引视图的内容。
就好像div正在充当iFrame(它不是)。我尝试了各种重定向和我的解决方法,但宁愿避免使用一个特定的视图,它将明确地重定向客户端的页面。
要点注意:我受公司政策的约束,使用IE8的构建安装,拖放等工作正如预制的文件的ajax上传一样正常。
答案 0 :(得分:1)
它完全按照设计工作。 jQuery的AJAX处理程序正在获取重定向并对其进行处理,并按照您的指示将结果数据加载到loadingData
中。
如果您希望实际的页面重定向,则需要自己处理。你最好从ajaxForm处理程序返回一个JSON结果,该处理程序表示成功,这会使你的JS重定向到给定的页面,或让你的处理程序返回表示重定向URL的JSON。
选项1:
{ "success": true }
选项2:
{ "success": true, "redirect": "/Index" }
为您的Action处理程序使用JsonResult
。创建一个简单的Model / ViewModel并将其传递给JsonResult类型,您不必执行任何其他操作。