2015-01-07 17 views
5

に私は!IsPostBackブロック内のいくつかのコードを書かれています。このコードは、ページが初めて読み込まれたときに実行されます。それは結構です。しかし、問題は、私はf5キーを押すことによってページをリフレッシュするときに、これはやり直したいということです。私は多くの記事を検索し、PostBackと更新の違いを発見しました。私はこれについて知っている。しかし、私の質問は!IsPostBackとリフレッシュの違いです。ページを更新するときではなく、最初にページが読み込まれたときにのみ実行されるコードを記述できますか?ところで、私は!IsPostBackブロックをPage_Init()メソッドの中に書いており、私はcodebehindのためにC#を使用しています。ありがとう。違いはAsp.Net

答えて

9

RefershとIsPostBackプロパティはやや無関係です:ブラウザで

  • 更新一般的には「このページの結果を再実行して最後のアクション」を意味します。通常はGETリクエストが発生しますが、ポストバックの結果としてページが表示された場合はPOSTも発生します。サイドノート:サイトでは、「クレジットカードの請求」などの非可逆操作中にページを更新しないように警告するサイトを見つけることができます。
  • IsPostBackは、その要求がGETではなくPOSTとしてサーバーに送信されるだけです。

Refreshを取得すると、if (IsPostBack)のいずれかのブランチがトリガーされます。ほとんどの場合、サーバーはGETリクエストを受信し、それゆえ!IsPostBackブランチを実行しますので。クッキーを設定したり、合理的な解決策になるSessionに情報を書き込む -

あなたが本当にページを一度すでにレンダリングされたかどうかを検出する必要がある場合

-1

コードを以下のように変更してください。

 Boolean IsPageRefresh; 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!IsPostBack) 
      { 
       ViewState["postids"] = System.Guid.NewGuid().ToString(); 
       Session["postid"] = ViewState["postids"].ToString(); 
      } 
      else 
      { 
       if (ViewState["postids"].ToString() != Session["postid"].ToString()) 
       { 
        IsPageRefresh = true; 
       } 
       Session["postid"] = System.Guid.NewGuid().ToString(); 
       ViewState["postids"] = Session["postid"].ToString(); 
      } 
     } 
+0

最初の読み込み後にリフレッシュする場合、ispostbackは常にfalseになります!だから、ページから戻って1つの投稿まで他に来ることはありません – MAK

+0

@AristosコードはJavascript用ではありません。これは、C# – NCA

+0

@MAK以外ではうまく動作しません。それはelse部分に含まれています。 – NCA

関連する問題