什么是回发而不是回发? (根据ASP.net)

时间:2010-08-27 00:27:26

标签: javascript asp.net redirect postback query-string

使用Javascript重定向到URL +“Querystring = value”与使用ASP.NET使用的任何机制之间有区别吗?

如果存在差异,如何通过javascript将渲染的ASP.NET页面提交到具有不同查询字符串的相同URL?

3 个答案:

答案 0 :(得分:4)

如果你想像asp:Button这样的asp控件做回帖,你可以使用框架中包含的javascript函数来执行此操作:

__doPostBack('ControlIDOfEventYouWantToRaise','');

您可以在本文中详细了解__doPostBack

Doing or Raising Postback using __doPostBack() function from Javascript in Asp.Net

仅使用form.submit()与使用__doPostBack完全相同。

要回答问题的第一部分,如果您只是执行Response.Redirect,那么执行重定向没有区别,因为遗嘱都会执行GET。不同之处在于,如果您使用asp:Button控件,它将首先访问您的页面以处理按钮(回发后),然后在重定向的页面上执行GET

如果您想提交相同的网址(例如发布您的数据),那么您应该使用__doPostBack方法。如果您不需要发布数据,那么只需在javascript中将重定向重定向到具有修改后的查询字符串的相同URL(这将只执行基本的GET),但不会发布您的数据。 / p>

答案 1 :(得分:1)

唯一可能的区别是通过GET发送查询字符串参数,一个表单(通常)由POST发送。

GET的数据限制要小得多,因为浏览器的最大URL长度(不尽相同)

可以使用javascript来执行一个form.submit()来模仿ASP.Net所做的事情

答案 2 :(得分:-1)

我有点不同意Basiclife的回答;如果您在

之类的内容中有任何代码
if (IsPostBack) {

它不会是等价的,即如果你只是设置URL,代码就会被执行。此外,控件会在回发中保持状态,但如果您再次调用URL,则会重新初始化。这是因为ASP.NET试图模拟“普通”应用程序,因此确保正常调用和回发具有相同效果的方法可能会导致整个页面“解除ASP.NET”。

我不确定你想要的是什么。可能有办法。但我非常怀疑这是一种更好的方法。如果您免费获得回发,并且可以传输数据,为什么数据显示在URL中,而不是轻松发布?我可以看到您希望页面如何响应URL参数,以及您可能希望以后根据该页面上发生的事情更改相同的参数,但由于您始终知道您正在回发,您可以例如覆盖在这种情况下,通过您发回的内容的URL参数。这听起来不是很好,但实际上可能不那么混乱。特别是因为你似乎有理由不放弃回发(否则你可以只使用一个链接,对吧?)。