【问题标题】:jQuery POST not changing IsPostback variablejQuery POST 不改变 IsPostback 变量
【发布时间】:2009-06-02 04:26:40
【问题描述】:

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

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

包含这两个变量对我来说很容易,但有人知道幕后发生了什么吗?

【问题讨论】:

  • 你应该发布一些你正在做和/或试图完成的示例代码。

标签: asp.net jquery forms


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    但是,您为什么要检查?实际上,这仅在发送完整的表单提交时才起作用,如果您要部分发布,则倾向于将其发送到 IsPostBack 不重要的 Web 服务。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-30
        • 1970-01-01
        • 1970-01-01
        • 2014-05-10
        • 2011-04-29
        相关资源
        最近更新 更多