IsPostBack究竟意味着什么?

Dea*_*unt 7 c# asp.net

我很想知道具体的Page.IsPostBack意味着什么.我完全了解它在标准ASP.NET页面中的日常使用,它表明用户正在将数据提交回服务器端.请参见Page:IsPostBack属性

但鉴于此HTML

<html>
   <body>
      <form method="post" action="default.aspx">
         <input type="submit" value="submit" />
      </form>
   </body>
</html>
Run Code Online (Sandbox Code Playgroud)

单击"提交"按钮时,将调用页面Page_Load方法,但Page.IsPostBack返回false.我不想补充runat=server.

如何判断首次加载的页面与客户端提交的请求之间的区别?

更新
我已添加,<input type="text" value="aa" name="ctrl" id="ctrl" />所以Request.Form有一个元素,Request.HTTPMethod是POST,但IsPostBack仍然是假的?

tva*_*son 12

检查Request.Form集合以查看它是否为非空.只有POST才会在Request.Form集合中包含数据.当然,如果没有表单数据,则该请求与GET无法区分.

对于标题中的问题,当请求是来自服务器端表单控件的POST时,IsPostBack设置为true.只使你的表单客户端失败了.


All*_*est 6

一种方法是扩展ASP.NET Page类,"覆盖"IsPostBack属性,并让所有页面都从扩展页面派生.

public class MyPage : Page
{
    public new bool IsPostBack
    {
        get 
        { 
          return 
            Request.Form.Keys.Count > 0 &&
            Request.RequestType.Equals("POST", StringComparison.OrdinalIgnoreCase); 
         }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 这实际上更适合名为"IsPost"的属性. (3认同)