有没有办法用jQuery或ASP.NET MVC触发服务器事件?

时间:2009-04-01 18:07:06

标签: asp.net-mvc jquery

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

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

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

有没有解决方法??

谢谢!

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

简而言之:不。

服务器不记得它发送页面的位置。一旦服务器将页面发送到浏览器,它就会结束连接。因此,服务器不知道在哪里发送刷新指令或新页面。要在网页上进行“实时”更新,浏览器需要启动呼叫。

答案 2 :(得分:0)

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