在使用jQuery将数据回发到服务器时,我遇到了一些奇怪的行为。
如果在序列化表单数据中包含__VIEWSTATE和__EVENTVALIDATION,则IsPostback页面变量设置为true,如果排除这两个变量,则IsPostback设置为false。
包含这两个变量对我来说很容易,但有人知道幕后发生了什么吗?
发布于 2009-06-02 04:31:10
viewstate和eventvalidation跟踪的一件事是是否发生了回发。考虑到基于事件的ASP.NET页面生命周期,除了简单地将值存储在某个地方之外,没有其他方法可以跟踪是否发生了回发。
换句话说,您可以通过深入viewstate对象并找到回发布尔值并将其更改为true来手动检查回发。这可能与描述的不完全一样,但它更好地突出了视图状态内部发生的事情。
发布于 2009-06-02 06:01:13
IsPostBack()有点乱七八糟的,但是它只检查__VIEWSTATE和__EVENTVALIDATION,并没有什么其他东西。它肯定不会做的是检查HTTP谓词是POST还是GET,这是大多数人假设的(如果您设置了一个简单的页面,并将viewstate和eventvalidation (如果存在)字段放在查询字符串中,然后检查IsPostBack(),就可以看到这一点)
但是,你为什么要检查呢?实际上,这只有在发送完整的表单提交时才会起作用,如果您只是部分发布,则倾向于将其发送到IsPostBack不重要的web服务。
发布于 2009-06-02 16:39:50
如果你想用jquery发出一个“回发”,你应该包括__VIEWSTATE和__EVENTVALIDATION。这是ASP.NET WebForms正确传播完整回发所需的两个关键数据块。如果您只希望发出服务调用,那么您应该不需要这两个字段中的任何一个,但是您将失去post到具有WebForms事件管道的所有好处的页面的能力。
https://stackoverflow.com/questions/937890
复制相似问题