0

希望我能清楚地表达这一点。

我在 MVC4 页面中使用 ajaxform 发送使用选择的 CSV 文件

        $(function () {

        function showResponse(responseText, statusText, xhr, $form) {
            $('#loadedData').html(responseText);
        }
        var options = {
            target: "#loadedData",
            success: showResponse
        };

        $("#form0").ajaxForm(options);
    });

然后将文件和映射的标题发送到另一个执行处理的控制器操作,我有一个 RedirectToAction("Index") 我想在完成时重定向整个页面。

奇怪的是,作为我的 ajaxform 结果目标的 div 被重定向到索引。所以我最终得到了浏览器中的上传页面和具有索引视图内容的#loadedData。

就好像 div 充当 iFrame(它不是)。我尝试了各种重定向,但我宁愿避免的解决方法是拥有一个特定的视图,该视图将在客户端显式地重定向页面。

需要注意的点:我受公司政策的约束,必须使用 IE8 的构建安装,拖放等都可以正常工作,就像 ajax 上传文件以进行准备一样,这很好。

4

1 回答 1

1

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

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

选项1:

{ "success": true }

选项 2:

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

将 aJsonResult用于您的操作处理程序。创建一个简单的 Model/ViewModel 并将其传递给 JsonResult 类型,您无需执行任何其他操作。

于 2013-09-18T13:11:05.103 回答