使用Javascript重定向到URL +“Querystring = value”与使用ASP.NET使用的任何机制之间有区别吗?
如果存在差异,如何通过javascript将渲染的ASP.NET页面提交到具有不同查询字符串的相同URL?
答案 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参数。这听起来不是很好,但实际上可能不那么混乱。特别是因为你似乎有理由不放弃回发(否则你可以只使用一个链接,对吧?)。