0

ファイルを生成するWebフォームがありますが、ポストバックを生成するボタンをクリックしてファイルを生成します。更新(F5)を押して終了したら、ページはポストバックを再送信してファイルを再生成します。ユーザーにメッセージを表示するか、単に何もしないでください。

ありがとう :)

4

4 に答える 4

2

より簡単な方法は、PostRediretGetパターンを使用することです。

http://en.wikipedia.org/wiki/Post/Redirect/Get

そのウィキペディアの記事の外部リンクを確認してください。

于 2009-07-02T18:48:48.443 に答える
0

ポストバックロジックで問題のファイルが存在するかどうかを確認し、ファイルがまだ存在しない場合にのみファイルを作成します。

if (false == System.IO.File.Exists(filename))
{
   // create the file
}
else
{
   // do whatever you do when the file already exists
}
于 2009-07-02T19:07:21.353 に答える
0

ポストバックされたページで更新がヒットした場合、ブラウザは警告を表示する必要があります。私がそれをどのように処理するかは、セッショントラックで私が行ったことであるため、特定のアクションを繰り返さないようにします。単純なフラグで十分です。

于 2009-07-02T18:43:30.417 に答える
0

私はこの問題の解決策を書きました、そしてここに誰かがそれを必要とするかどうかがあります。

  protected void Page_Load(object sender, System.EventArgs e)
  {
    /*******/
    //Validate if the user Refresh the webform.
    //U will need::
    //A global private variable called ""private bool isRefresh = false;""
    //a global publica variable called ""public int refreshValue = 0;""
    //a html control before </form> tag: ""<input type="hidden" name="ValidateRefresh" value="<%= refreshValue %>">""

    int postRefreshValue = 0;
    refreshValue = SII.Utils.convert.ToInt(Request.Form["ValidateRefresh"]); //u can use a int.parse()

    if (refreshValue == 0)
      Session["ValidateRefresh"] = 0;

    postRefreshValue = SII.Utils.convert.ToInt(Session["ValidateRefresh"]); //can use a int.parse()

    if (refreshValue < postRefreshValue)
      isRefresh = true;

    Session["ValidateRefresh"] = postRefreshValue + 1;
    refreshValue = SII.Utils.convert.ToInt(Session["ValidateRefresh"]); //can use a int.parse()
    /********/

    if (!IsPostBack)
    {
       //your code
    }
  }

あなたはただ評価する必要があります:

if (!isRefresh)
  PostFile();
else
{
  //Error msg you are refreshing
}
于 2009-07-02T23:57:24.590 に答える