如何在 ASP.NET Web 表单中填补服务器端和客户端之间的空白

How to fill the gap between server-side and client-side in ASP.NET webforms?

本文关键字:服务器端 客户端 之间 空白 ASP NET 表单 Web      更新时间:2023-09-26

伙计们,

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

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

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

做相反的事情(即服务器向客户端发起消息),这是一个更困难的用例。HTTP,仅仅从它的实现方式来看,很容易client -> server的东西,但server -> client几乎是不可能的。它只是不是为此而设计的。如果没有客户端先请求,服务器无法向客户端发送某些内容。这是一个大问题:客户端如何知道服务器何时需要向其发送内容?有点违背了目的。

当然,目前有一些东西正在使用来弥合这一点。其中一种更有前途的是 Web 套接字,这是一种可靠、具体的方法,允许服务器在没有客户端请求的情况下将消息推送到客户端(请注意,IIS 7 开箱即用不能支持 Web 套接字 AFAIK)。另一个是Comet,甚至是通过定期轮询的AJAX。

对于您似乎想要的功能,一个很好的包装器是 SignalR。我已经使用它一段时间了,到目前为止它似乎运行良好。它在可用时使用 Web 套接字,在不可用时使用静默回退。

Asp.net 默认解决方案是使用更新面板。这将创建 ajax 请求并将其发送到服务器。(处理您的分页问题。

要打开有关服务器上发生的事件的对话框,请执行以下操作:

默认情况下,Http 是无连接的,您将无法在开箱即用 asp.net 执行此操作。

你可以看看像彗星这样的方法。这可以在 asp.net 中使用异步调用来完成。

网上有一些使用

asp.net 的彗星样本。但它可能涉及对代码的重大更改。还有一些像 Signar 这样的库可能会有所帮助。