【问题标题】: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 并且当用户更改页面时它会关闭。 我需要知道什么是填补这个空白的最佳方法?

【问题讨论】:

  • 答案之间的共同点是 SignalR

标签: 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。我已经使用它一段时间了,到目前为止它似乎工作得很好。它在可用时使用网络套接字,在不可用时静默使用回退。

【讨论】:

    【解决方案2】:

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

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

    Http 默认是无连接的,你将能够在开箱即用的 asp.net 中做到这一点。

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

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

    【讨论】:

      猜你喜欢
      • 2011-02-10
      • 1970-01-01
      • 1970-01-01
      • 2018-08-20
      • 2023-03-12
      • 2012-08-21
      • 1970-01-01
      • 2012-04-26
      • 1970-01-01
      相关资源
      最近更新 更多