【问题标题】:MVC4 Redirect from ajax page redirecting the div (behaving like iframe)从 ajax 页面重定向 div 的 MVC4 重定向(行为类似于 iframe)
【发布时间】:2013-09-18 13:00:38
【问题描述】:

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

我在 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 上传文件以进行准备一样,这很好。

【问题讨论】:

    标签: asp.net-mvc jquery redirect


    【解决方案1】:

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

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

    选项 1:

    { "success": true }
    

    选项 2:

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

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

    【讨论】:

    • 非常好,感谢您调整我的理解。它没有向我注册我的两个帖子的 ajaxform 都处于活动状态,我只是没有正确地考虑它。
    猜你喜欢
    • 2011-01-06
    • 1970-01-01
    • 2013-09-05
    • 2023-03-25
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    相关资源
    最近更新 更多