【问题标题】:RedirectToAction MVC 3 after $.ajax call$.ajax 调用后的 RedirectToAction MVC 3
【发布时间】:2012-01-16 05:18:44
【问题描述】:

在我看来,我通过 $.ajax 向我的控制器发送一个 JSON 对象以将其保存在数据库中。 如果全部成功,我想重定向到另一个将显示不同视图的操作。

如果我使用此代码:

return RedirectToAction("CreatePage", "Survey", new {id = question.PageId});

执行转到返回视图但未显示的调查控制器。

我读过一些帖子说通过 ajax 重定向是不可能的。

目前我使用的解决方案是通过 javascript 重定向,如下所示:

success: function (ret) {
            window.location.href = "/Survey/CreatePage/" + $("#PageId").val();
         }

虽然这总是有效,但有时我需要刷新 CreatePage 视图以显示最后所做的更改。

知道如何更好地解决这个问题吗?

提前致谢

【问题讨论】:

  • 我的第一个想法是为什么要使用 ajax 来完成?有没有在发布后不会重定向的情况?您提到如果全部成功,它将重定向,但您可以处理重定向到错误页面或带有错误消息的同一页面。并非在所有情况下都需要 Ajax - 它是一种工具,只应在适当的时候使用。
  • 您希望从 AJAX 请求中返回 HTML 或 JSON 吗?我问的原因是,如果你接受 JSON,理论上你可以为每个具有一些常见属性的 AJAX JSON 请求制作一个包装器响应,例如:.Success、.Message、.Data 和 .Redirect。您的 JS 可以评估在 AJAX 上发回的属性,以确定它是否需要更新消息或进行重定向。

标签: asp.net-mvc-3 jquery redirect


【解决方案1】:

正如 mccow002 所建议的那样,我真的不需要通过 AJAX 进行调用。在研究了建议的解决方案后,我意识到我可以简单地以表格形式提交。我的困惑来了,因为我有一个保存并继续编辑和保存。对于保存并继续,我使用 AJAX 调用,但是对于提交表单的保存选项是可以的。

非常感谢您的帮助。

【讨论】:

    【解决方案2】:

    您可以在 CreatePage 操作上使用[OutputCache],这样它就不会缓存页面或只缓存很长时间。

    output caching

    【讨论】:

      【解决方案3】:

      您可以将呈现的 html 从 .net 代码发送回客户端并将该 html 加载到页面中,而不是重定向到新页面,例如 $("#main").load(renderedHtml)

      但要刷新页面,您可以编写一个以指定时间间隔运行并刷新页面内容的简单脚本。

      【讨论】:

        猜你喜欢
        • 2019-07-09
        • 1970-01-01
        • 1970-01-01
        • 2011-11-28
        • 1970-01-01
        • 2016-05-16
        • 2022-10-08
        • 2012-08-13
        • 2018-06-02
        相关资源
        最近更新 更多