jQuery POST不能改变IsPostback变量

3

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

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

很容易让我包含这两个变量,但有没有人知道背后发生了什么?


1
你应该发布一些示例代码,展示你正在做什么或者试图实现什么。 - John Sheehan
3个回答

4

视图状态和事件验证所追踪的其中一件事情是是否发生了 postback。考虑到基于事件的 ASP.NET 页面生命周期,没有其他方法可以跟踪 postback 是否发生,除了简单地在某处存储该值。

换句话说,您可以通过深入查找视图状态对象并找到 postback 布尔值并将其更改为 true 来手动检查 postback。这可能不完全如描述的那样,但它更好地说明了视图状态中正在发生的事情。


2
IsPostBack()有点混乱,但是它确实检查__VIEWSTATE和__EVENTVALIDATION,除此之外,它并没有检查HTTP动词是POST还是GET,这是大多数人所认为的(如果您设置一个简单的页面,并将viewstate和eventvalidation(如果存在)字段放在查询字符串中,然后检查IsPostBack(),您就可以看到这一点)。
但是,为什么要进行检查呢?只有当发送完整表单提交时,才会真正发挥作用;如果您部分提交,则倾向于将其提交到Web服务,其中IsPostBack不重要。

0
如果您想使用jquery发出“postback”,则应包括__VIEWSTATE和__EVENTVALIDATION。这些是ASP.NET WebForms所需的两个关键数据块,以便能够正确地传播完整的postback。如果您只希望发出服务调用,则不需要这两个字段,但您将失去使用WebForms事件管道的所有好处来发布页面的能力。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接