【问题标题】:How to fill the gap between server-side and client-side in ASP.NET webforms?如何填补 ASP.NET 网络表单中服务器端和客户端之间的空白?
【发布时间】:2012-06-19 11:48:23
【问题描述】:
伙计们,
我想知道如何填补 ASP.NET 网络表单中服务器端和客户端之间的空白,如何从服务器端触发客户端和虎钳诗句?
如何从服务器端打开 jQuery UI 对话框?如何获得带有回发的模态对话框,例如,如果我在 jQuery UI 模态对话框中有一个分页的 GridView 并且当用户更改页面时它会关闭。
我需要知道什么是填补这个空白的最佳方法?
【问题讨论】:
标签:
javascript
jquery
asp.net
jquery-ui
webforms
【解决方案1】:
当涉及到在 Web 环境中与客户端交互的服务器时,您必须处理相当严格的限制。我将在这里的回答中笼统地回答。
当您想将某些内容从客户端传递到服务器时,这通常很容易做到。一种相对常见的方法是通过 AJAX。最简单的 ASP.NET WebForms 通过<form> 提交进行通信。
做相反的事情(即服务器向客户端发起消息),这是一个更困难的用例。 HTTP,就其实现方式而言,使client -> server 变得容易,但server -> client 几乎是不可能的。它只是不是为此而设计的。如果没有客户端首先要求,服务器就不能向客户端发送一些东西。这就是最大的问题:客户端如何知道服务器何时需要发送一些东西?有点违背了目的。
当然,目前正在使用一些东西来弥补这一点。其中一个更有希望的是web sockets,这是一种可靠、具体的方式,允许服务器在客户端不请求的情况下将消息推送到客户端(请注意,IIS 7 开箱即用不支持网络套接字 AFAIK)。另一个是 Comet,甚至是通过定期轮询的 AJAX。
您似乎想要的功能的一个很好的包装是SignalR。我已经使用它一段时间了,到目前为止它似乎工作得很好。它在可用时使用网络套接字,在不可用时静默使用回退。