MVC4从ajax页面重定向重定向div(表现得像iframe)

时间:2013-09-18 13:00:38

标签: asp.net-mvc jquery redirect

希望我能清楚地说明这一点。

我在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上传一样正常。

1 个答案:

答案 0 :(得分:1)

它完全按照设计工作。 jQuery的AJAX处理程序正在获取重定向并对其进行处理,并按照您的指示将结果数据加载到loadingData中。

如果您希望实际的页面重定向,则需要自己处理。你最好从ajaxForm处理程序返回一个JSON结果,该处理程序表示成功,这会使你的JS重定向到给定的页面,或让你的处理程序返回表示重定向URL的JSON。

选项1:

{ "success": true }

选项2:

{ "success": true, "redirect": "/Index" }

为您的Action处理程序使用JsonResult。创建一个简单的Model / ViewModel并将其传递给JsonResult类型,您不必执行任何其他操作。