什么是回发?

P.B*_*key 81 asp.net

我发现postBack的最佳解释来自Wiki.

回发是指向表单所在页面的HTTP POST.

虽然本文确实解释了如何在ASP中使用第二页,但在ASP.NET中不再需要,但它没有提供太多细节或背景知识.我正在寻找关于PostBacks的信息.这本900页的书可以解决这个简单的问题"我怎样才能打扫房子" .我不需要900页,但请详细说明.我找到了一个很好的ASP.NET生命周期的小教程,但它严重掩盖了回发(除此之外).

我期待那些在.NET之前就已经存在的开发人员并且真的不认为这些事情是理所当然的.书籍和超链接是您答案的合理答案或补充.

jco*_*and 61

到目前为止,我已经看到了正确的答案反复提到,几乎每个人都羞于我认为主观上的标记.

让我们从基础开始:

HTTP请求可以是任何HTTP动词,但人们最常使用的两个是GET和POST.嗯,这些是程序员最常使用的两个.如果它们在服务器上实现,其他都有一些目的.当您向服务器发送信息时,您可以通过使用URL(请求页面)或在请求正文(例如,POST,PUT,DELETE)中执行此操作.

现在你要说(我敢肯定)GET请求中的URL经常包含数据,这是正确的,但根据W3C,你不应该使用GET来改变状态,但我们经常这样做.这是一种我们都同意的黑客是实际使用,而不是黑客攻击.无论是使它成为黑客还是实际的实施细节,我都会留给您.

因此,当你发送POST的正文(现在跳过其他人,你可以从这里找出来)和表单元素时,你会发回某些元素.如何定义这些元素取决于您和您正在使用的环境.您可以在正文中使用JSON元素,或使用XML或表单字段发布到服务器.通常我们会从HTML 正文中的FORM元素发布帖子.

现在每个人都说,"哦,回发是对页面的后续请求." 但是,那不是真的.回发是指您通过POST发送数据 - >返回服务器.我这样说是因为GET请求和POST请求之间的区别在于数据是否包含在正文中(并且使用了动词,但客户端通常知道如何处理).您可以在第一次访问页面时回发到页面,实际上ASP.NET具有在库中执行此操作的工具.您当然可以将一个桌面客户端POST数据发送到服务器(想想Twitter)而不显示任何来自服务器的网页(好吧,所以推特可能不是这里用来举例的最佳概念,但我想说明你可以使用不显示网页的客户端,因此不需要请求).

所以你应该在"回发"中读到的是"我正在将数据发布回服务器进行处理".假设您最初使用GET检索页面,以向用户显示<form>具有<input>供他们交互的字段的元素,并且最后您将数据发回.但我希望你能看到它不必按顺序排列.

所以这里有一些需要考虑的事情:

如果你给用户一个页面一堆<input>S和无<form>而是有一个按钮,在javascript有线高达Concat的所有<input>与S &value-n=并将它们作为一个GET?做同样的事情,但违反了仅对请求使用GET的概念.(可能) 随后的讨论鼓励我强调GET应该没有副作用(没有更新值)

例如,你可以如何向某人发送链接到谷歌搜索.所以我们不必总是回到服务器来获取数据.

希望这可以帮助.干杯

  • -1:问题标记为ASP.NET.在ASP.NET中,术语"回发"具有涉及页面生命周期事件,Viewstate,测试IsPostBack,...的特定含义. (34认同)
  • 因此,基本上,回发只是对任何页面的HTTP POST? (2认同)

Ian*_*cer 29

POSTBACK:ASP.NET的一种设计技术,用于隐藏有状态外观背后的Web/HTTP的真正无状态特性.这导致复杂的代码(IsPostback,...),难以理解的页面生命周期,许多不同的事件,......以及许多问题(ViewState大小,Web-farm粘性,状态服务器,浏览器警告(不使用PRG模式) ,...)

请参阅ASP.NET MVC.

  • 作为一个长期非微软的Web开发人员,我从来没有在.net上下文之外听过"PostBack"一词.发布数据和术语PostBack是非常不同的东西.这是一个完美的答案. (4认同)
  • 哇塞!真的么?我很确定我听过在asp.net之外的其他框架的引用中使用的回发....让我们不要混淆这个可怜的小伙伴. (3认同)
  • 问题是标记为ASP.NET.在ASP.NET的上下文中,"Postback"具有特定的含义.例如,请参阅:http://msdn.microsoft.com/en-us/library/system.web.ui.page.ispostback.aspx (3认同)

Yaa*_*lis 28

请参阅MSDN上的ASP.NET页面生命周期概述,以获得有关请求到达服务器时发生的情况的一般性介绍.

PostBack是对第一个请求不是页面的任何请求.PostBack将始终响应用户操作(最常见的是Button,AutoPostBack控件或Ajax触发).


Dav*_*hel 13

回发是从客户端(浏览器)到服务器的往返,然后回到客户端.

这使您可以使用页面浏览服务器上的asp引擎以及要更新的任何动态内容.

这是一个很好的解释


Sco*_*tie 10

ASP.Net使用一个新的概念(好吧,新的,与现在已经过时的asp相比)来保持你的asp.net控件的状态.这是什么意思?简而言之,如果您在文本框中键入内容或从下拉列表中选择下拉列表,则会在您单击按钮时记住这些值.旧的asp会强迫你编写代码来记住这些值.

如果用户遇到错误,这很有用.asp.net viewstate自动为您完成此操作,而不是程序员必须处理记住重新填充每个Web控件.它也很有用,因为现在后面的代码可以使用intellisense访问asp.net Web表单上这些控件的值.

至于发布到同一页面,是的,"提交"按钮将发布到页面后面的代码上的事件处理程序.如果需要,可以将代码中的事件处理程序重定向到另一个页面(或者向您的页面提供错误消息或者您可能需要执行的任何其他操作).


jwh*_*ron 8

维基百科对回发的定义非常好,但我添加了以下内容: 回发是 后续 HTTP POST到表单所在的同一页面.

如果我有一个带有表单的页面,而不是让我的"提交"按钮将浏览器重定向到另一个将处理表单的页面,而是让"提交"按钮刷新当前页面(并执行一些特定步骤来验证/保存页面,大概),然后说,提交按钮据说已回发到当前页面.

回发可以是完整的(刷新整个页面),也可以是部分的(在使用AJAX的情况下).部分页面回发将仅重新呈现页面的一部分(如单个下拉列表,表格等).