jQuery POST不改变IsPostback变量

时间:2009-06-02 04:26:41

标签: asp.net jquery forms

当使用jQuery将数据发送回服务器时,我会遇到一些奇怪的行为。

如果我在序列化表单数据中包含__VIEWSTATE和__EVENTVALIDATION,则IsPostback页面变量设置为true,如果我排除这两个,则IsPostback设置为false。

我很容易将这两个变量包含在内,但有谁知道幕后会发生什么?

3 个答案:

答案 0 :(得分:4)

viewstate和eventvalidation跟踪的一个方面是回发是否已经发生。考虑到基于事件的ASP.NET页面生命周期,没有其他方法可以跟踪是否发生了回发,而不是简单地将值存储在某处。

换句话说,您可以通过挖掘viewstate对象并查找回发布尔值并将其更改为true来手动检查回发。这可能与描述的不完全相同,但它会更好地突出显示在视图状态内的内容。

答案 1 :(得分:2)

IsPostBack()有点乱,但是它正在检查__VIEWSTATE和__EVENTVALIDATION而不是其他。它当然没有做的是检查HTTP动词是POST还是GET,大多数人都认为(如果你设置一个简单的页面并在查询中放置viewstate和eventvalidation(如果存在)字段,你可以看到这一点然后检查IsPostBack()

但是你为什么要检查?实际上,只有在发送完整表单提交时才会发挥作用,如果您部分发布,则往往会将其发送到IsPostBack不重要的Web服务。

答案 2 :(得分:0)

如果你想用jquery发出“回发”,你应该包括__VIEWSTATE和__EVENTVALIDATION。这些是ASP.NET WebForms需要能够正确传播完整回发的两个关键数据块。如果您只想发出服务调用,那么您不应该需要这些字段,但是您将无法使用WebForms事件管道的所有好处发布到页面。