【问题标题】:How do I change the view behind the popup after an ajax post?如何在 ajax 发布后更改弹出窗口后面的视图?
【发布时间】:2010-11-01 02:51:58
【问题描述】:

我的页面上有一个“编辑配置文件”灯箱,它通过 jQuery ajax 发布到控制器。我在 jquery 端处理响应而不是返回视图。但是,保存配置文件后,我需要刷新显示弹出窗口的页面上的值。我如何在 MVC2 中实现这一点?例如,如果用户更改了她的姓名和头像(在灯箱中),在她保存个人资料后,我想更新页面上所有出现的头像和名称。

【问题讨论】:

    标签: c# .net asp.net jquery asp.net-mvc


    【解决方案1】:

    我要做的是让你的控制器返回一个 PartialViewResult,最终结果基本上是 HTML。

    Partial View 将是弹出窗口本身,因此基本上您通过 AJAX 调用 Controller 方法,执行服务器端工作,然后将 Partial View 重新呈现给客户端。

    【讨论】:

    • 谢谢,所以我不仅需要更新弹出窗口中的值,还需要更新背景页面中的值(即使它更暗,您仍然可以看到旧值)。那么我会按照@jim 的方法返回两个部分视图(一个用于弹出窗口,一个用于包含弹出窗口的页面)?
    • 是的,异步更新页面部分的最佳方法是使用带有 AJAX 的 PartialViewResults。这是我们在 MVC 中最接近 Web 窗体中的 UpdatePanel 控件的东西。
    • 其实我需要更新的是包含弹窗的页面,而不是弹窗本身...
    • @Prabhu - 整个页面?还是只是其中的一部分?
    • @RPM1984——只是其中的一部分——无论在哪里看到更新的信息(例如,名称)。
    【解决方案2】:

    让您通过 jQuery 发布到的操作返回 success for failure 消息。如果是success,请使用文本框中已有的值(即:您发布到控制器的值)更改页面上的头像/名称/等。如果是failure 消息,则显示验证错误。

    在你的jQuery AJAX中,一切都可以在AJAX请求的回调函数中完成。

    【讨论】:

    • 所以基本上通过用更新的值操作 dom 来手动替换页面值?我正在考虑这一点,但想知道这是否是最佳标准做法。
    • 是的,你可以这样做。我不确定这个特定场景是否存在best standard practice,但我详述的方法简单有效;我认为使用它没有任何缺点。
    • ASP.NET MVC 中的“最佳标准实践”是 RPM1984 的答案。但是这种方法是一样的。 stackoverflow.com/questions/4066383/…
    【解决方案3】:

    Prabhu - 您的个人资料页面(即其中包含的“主”div)和弹出 div 都应该是部分视图。在将弹出窗口发布回服务器时,您应该重新查询主页面部分视图并返回适当的 html,以“主”div 为目标。

    这当然是我为非常相似的任务所采取的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-17
      • 2015-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-02
      相关资源
      最近更新 更多