【问题标题】:Is there a way to trigger a server event with jQuery or ASP.NET MVC?有没有办法用 jQuery 或 ASP.NET MVC 触发服务器事件?
【发布时间】:2009-04-01 18:07:05
【问题描述】:

我有这种情况:我有一个页面,其中有一天的事件列表。这些事件的状态可以更改为“已确认”或“已取消”。

但是,例如,当我单击“已确认”时,此状态会保存在 SQL Server 上,并且此状态会显示为“已确认”。但是,如果另一个人在我更改事件状态时打开了相同的页面,则此人将不会看到新状态。他只会查看是否重新加载页面。

我知道有一个 Ajax 设置 TimeOut 每 5...10...15 秒刷新一次页面。但我在想,如果有一个 jQuery 或 ASP.NET MVC 触发器,当我更改事件状态时,服务器会以浏览器刷新来响应。

有什么解决办法吗?

谢谢!!

【问题讨论】:

    标签: asp.net-mvc jquery


    【解决方案1】:

    选项 1:使用 jQuery Timer 并每 X 秒更新一次页面上的控件。 (您不必重新加载整个页面,只需使用确认/取消状态的控件状态,并仅在服务器返回新值时更改它们)。

    选项 2:您可以使用 Silverlight 2+ 从服务器触发页面上的事件。

    提示:当您更新控件的状态(确认/取消)时,也会传递初始状态。因此,如果一个用户已将状态从已确认更新为已取消,另一位尝试将此状态从确认更新为已取消的用户将收到一条友好的错误消息。

    【讨论】:

    • 这两个选项都不适合我... :-( 我需要的是在更改事件状态时刷新其他页面。
    • 那么你应该把计时器放在这个“其他”页面上。
    • @AndreMiranda,听听 darin 的讲述 :-) 没有其他选择。
    【解决方案2】:

    简而言之:没有。

    服务器不记得它发送页面的位置。一旦服务器向浏览器发送一个页面,它就会结束连接。因此,服务器将不知道将刷新指令或新页面发送到何处。要在网页上进行“实时”更新,浏览器需要发起调用。

    【讨论】:

      【解决方案3】:

      您可以在 ASP .NET 中使用异步处理程序来实现它。这意味着,您可以在服务器上订阅更新事件,并且服务器持有请求(同时不消耗任何工作线程),并且当状态更新时,请求结束并且具有新状态的响应发送给客户端。

      【讨论】:

        猜你喜欢
        • 2022-01-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-05
        • 2010-09-15
        • 2019-06-13
        • 2011-08-10
        相关资源
        最近更新 更多