【问题标题】:IsPostback=false even though Request.HttpMethod is "POST"?IsPostback=false 即使 Request.HttpMethod 是“POST”?
【发布时间】:2011-07-22 14:40:47
【问题描述】:

我最近一直在研究网络表单,看看是否可以使用我的(路由)项目之一。到目前为止,这只是麻烦,但我几乎到了它“有效”的地步

我制作了一个页面“Test.aspx”。在 Global.asax,我将其发送到 /test 而不是 /Test.aspx。这完全有效。它来自我的一个自定义页面类。自定义类在页面中找到 HtmlForms 并使用适当的值重写其 Action 属性:/test

现在我遇到了名为 Viewstate 和 ASP.Net 事件的巨大砖墙。我使用 OnClick 处理程序向 Test.aspx 添加了一个按钮。我可以单击按钮,页面将回发等,但不会发生 OnClick 事件。我不明白一个简单的 URL 更改如何破坏这样的视图状态,因为我不认为 Viewstate 会跟踪这样的事情。此外,IsPostback 将为 false,即使 HttpMethod==true。这对我来说没有任何意义。

另外,我已经禁用了 EventValidation,因为我认为这会很麻烦,但这个问题仍然存在。

在重写 URL 时,如何使视图状态和回发正常工作?

(注意,我的 URL 重写形式在内部进行所有重写,从来没有向用户发送 HTTP 重定向)

【问题讨论】:

    标签: asp.net routing url-rewriting viewstate


    【解决方案1】:

    您可能需要告诉 HttpContext URL 也正在被重写。

    尝试做这样的事情:

    HttpContext.Current.RewritePath("/test");
    

    【讨论】:

    • 不幸的是,这没有任何作用。不过,我相信这让我的表单重写代码毫无意义,所以这是一件好事。
    • 如果在 page_load 之后完成,这显然只会替换我的表单重写代码
    【解决方案2】:

    IsPostBack 用于检查请求是否来自页面本身的控件。

    并且HttpMethod用于检查请求类型。

    【讨论】:

      猜你喜欢
      • 2011-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多