什么是回发?


142

我正在进入Web开发,并且看到了回发这个词。来自非基于Web的背景,新的Web开发人员对回发有什么了解?(即它们是什么,它们何时出现?)

非常感谢您想分享任何信息以帮助网络新手了解回发。

Answers:


178

以下是针对ASP.Net的初学者的...

什么时候发生?

回发源自客户端浏览器。通常,页面上的一个控件将由用户操纵(单击按钮或更改下拉菜单等),并且此控件将发起回发。该控件的状态以及页面上的所有其他控件(称为“查看状态”)被发布回 Web服务器。

怎么了?

最常见的是,回发使Web服务器在启动回发的页面的类后面创建代码实例。然后,该页面对象会在正常页面生命周期内执行,但会有细微差别(请参见下文)。如果您没有在页面生命周期内将用户专门重定向到其他页面,则回发的最终结果将是再次向用户显示同一页面,然后可能发生另一次回发,依此类推。

为什么会发生?

Web应用程序正在Web服务器上运行。为了处理用户的响应,导致应用程序状态更改或移至其他页面,您需要获取一些代码以在Web服务器上执行。实现此目的的唯一方法是收集用户当前正在处理的所有信息,并将其全部发送回服务器。

初学者需要注意的一些事情是...

  • 在上下文中可以使用回发页面上控件的状态。这将使您能够操纵页面控件或根据那里的信息重定向到另一个页面。
  • 就像任何其他控件一样,Web窗体上的控件具有事件,因此也具有事件处理程序。页面生命周期的初始化部分将在导致回发的控件的事件处理程序之前执行。因此,页面的Init和Load事件处理程序中的代码将在用户单击按钮的事件处理程序中的代码之前执行。
  • 当页面在回发后执行时,“ Page.IsPostBack”属性的值将设置为“ true”,否则将设置为“ false”。
  • 诸如Ajax和MVC之类的技术已经改变了回发的工作方式。

2
较小的更正-“此控件的状态以及页面上的所有其他控件(称为“查看状态”)被回发了。” 该数据实际上是回发数据。Viewstate数据也会回发,但这是控件上次在服务器上时的状态。
西蒙(Simon)

注意回发用于所有.NET平台,而不仅是ASP.NET
JNF 2012年

1
“为了处理用户的响应,导致应用程序状态更改或移至其他页面,您需要获取一些代码才能在Web服务器上执行。” 这有点误导。您不必总是需要 “在Web服务器上执行的代码”来执行这些操作。如果可能,最好在客户端上处理用户输入。关于回发,最重要的事情之一是如何/何时进行回发。也就是说,何时在客户端或通过Ajax等来处理事务
Hawkeye Parker

1
同意@HawkeyeParker。当我所知道的只是Web Forms体系结构时,我就写了这篇文章。从那时起,事情肯定已经走了很长一段路!我的所有解释绝对没有考虑到Ajax。
Andy McCluggage

27

来自维基百科

回发是交互式网页执行的操作,当整个页面及其内容发送到服务器以处理某些信息,然后服务器将同一页面发回浏览器时。


@Galwegian:您不认为那只有在发生某些验证错误时才会出现,以便显示与结果相同的页面。
Shirgill Farhan 2014年

21

当网页将其数据发回到最初生成该页面的相同脚本/ dll /文件时,就会发生回发。

C#中的示例(asp.net)

...

if (!IsPostback)
   // generate form
else
   process submitted data;

20

扩展给定的定义后,作为Web开发人员,您需要了解的最重要的事情是回发之间不保存任何状态。有一些方法可以保留状态,例如ASP.NET中的Session或Viewstate集合,但是根据经验,编写程序可以在每次回发中重新创建状态。

这可能是台式机和基于Web的应用程序编程之间的最大区别,这使我花了几个月的时间来学习本能地以这种方式编写的程度。


2
说得好。没有被保存,除了在会议和视图状态
万里

1
好点!是的,当来自客户端编程领域时,这似乎确实需要花些时间来动动脑筋。
Scott Saad

10

Web开发通常涉及保存表单(<form>标签)的html页面。表单发布到URL。您可以设置一个给定的表单以发布到您想要的任何URL。一个回发是当窗体回发到它自己的页面/ URL。

该术语对ASP.Net开发人员具有特殊意义,因为它是驱动页面许多行为的主要机制-特别是“事件处理”。ASP.Net页面恰好具有一种几乎总是回发到其自身的服务器形式,这些回发触发在服务器上执行称为页面生命周期的操作。


6

与第三方Web服务API交互时,该术语还用于Web应用程序开发

许多API都需要交互式和非交互式集成。通常,交互式部分是使用重定向完成的(站点1将用户重定向到站点2,他们在该站点登录并重定向回)。非交互部分是使用“回发”或从站点2的服务器到站点1的服务器的HTTP POST完成的。


5

当脚本生成html表单以及该表单的操作时,http POST返回相同的表单。


4

回发实质上是将表单提交到与您当前正在处理的数据(而不是将您发送到新页面)相同的页面或脚本(.php .asp等)的情况。

一个示例可能是论坛上的页面(viewpage.php),您在其中提交评论,然后将其提交到同一页面(viewpage.php),然后您会看到它并添加了新内容。

请参阅:http : //en.wikipedia.org/wiki/回发


3

回发是导致客户端Web浏览器中的页面被推回到服务器的任何事情。

那里有很多信息,请在google中搜索回发。

在大多数情况下,任何ASP控件都会引起回发(按钮/链接单击),但是除非您告知他们(复选框/组合框),否则它们不会引起回发。


3

回发是指HTML表单。HTML表单有2种方法:GET和POST。这些方法确定如何通过表单将数据从客户端发送到服务器。回发是回发到提交页面的操作。从本质上讲,它形成了从客户端到服务器再返回的完整电路。


2

上面的问题仍然可以正确回答,但只想分享我的知识。回发基本上是我们可以在执行一些需要管理页面状态的任务时使用的属性,即我们触发了某个事件(例如单击按钮)或刷新了页面。当页面第一次加载时(即,如果我们刷新了页面),那时postback-property为false,之后变为true。

if(!ispostback)
{
 // do some task here
}
else
{
 //do another task here
}

http://happycodng.blogspot.in/2013/09/concept-of-postback-in.html

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.