如何填补ASP.NET webforms中服务器端和客户端之间的空白?

时间:2012-06-19 11:48:23

标签: javascript jquery asp.net jquery-ui webforms

民间,

我想知道如何填补ASP.NET webforms中服务器端和客户端之间的空白,如何在服务器端和vise中触发客户端中的某些内容? 如何从服务器端打开jQuery UI对话框?如何获得带回发的模态对话框,例如,如果我在jQuery UI模式对话框中有一个分页的GridView,并且当用户将页面关闭时。 我需要知道填补这个差距的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

Asp.net默认解决方案是使用update panels。 这将创建ajax请求并将它们发送到服务器。 (注意你的分页问题。)

打开服务器上发生的事件的对话框:

默认情况下,Http是无连接的,你能够在asp.net中开箱即用。

您可以查看comet等方法。这可以使用异步调用在asp.net中完成。

网上有一些comet samples using asp.net可用。但它可能会对您的代码进行重大更改。还有一些像Signar这样的库可能会有所帮助。

答案 1 :(得分:1)

当涉及到在Web环境中与客户端交互的服务器时,您必须使用非常可靠的限制。我将在这里回答一般问题。

如果您想将某些内容从客户端传递到服务器,通常很容易做到。一种相对常见的方法是通过AJAX。最简单的ASP.NET WebForms通过<form>提交进行通信。

执行反向(即服务器向客户端发起消息),这是一个更难的用例。 HTTP,就像它实现的方式一样,可以轻松实现client -> server内容,但server -> client几乎是不可能的。它只是不是为此而设计的。如果没有客户端首先要求它,服务器就无法发送客户端。这就是一个大问题:客户端如何知道服务器何时需要发送内容?有点挫败目的。

当然,目前有一些东西正在用来弥补这一点。其中一个更有前景的是web sockets,这是一种坚实,具体的方法,允许服务器将消息推送到客户端而无需客户端要求它(请注意IIS 7开箱即用可以' t支持网络套接字AFAIK)。另一个是Comet,甚至是通过定期轮询的AJAX。

您想要的功能的好包装是SignalR。我已经使用了一段时间,到目前为止似乎工作得非常好。它在可用的情况下使用网络套接字,并且当它不可用时静默使用网络套接字。