3

ASP / C#プログラミングは初めてです。

私はasp:button次のように作成しました:

<asp:button
    ID="CreateItem"
    ClientIDMode="Static"
    OnClick="btnSave_Click"
    runat="server"
    Text="SAVE">
</asp:button>

背後にあるコードには、次のものがあります。

btnSave_Click(object sender, EventArgs e)
{
    //Code here to create an Item    
}

ボタンをクリックしてページを更新すると、この関数が呼び出されていることに気付きました。確認するために、デバッガーを実行して関数内にブレークポイントを設定しbtnSave_Click、ページを更新したときに実際に関数内にあることを確認しました。私は何が間違っているのですか?

4

2 に答える 2

6

元のボタンをクリックするとフォームが投稿されたため、ボタンをクリックした後、ページの更新時に呼び出されます。その後ページを更新すると、ブラウザはフォームデータを再投稿するだけで、コールバック関数が再度呼び出されます。

これを回避するには、URLを入力するか、アドレスバーでURLを強調表示して、Enterキーを押すだけで、ページの読み込みとして扱われます。

編集:あなたが何を求めていたかを完全に理解していませんでした。ユーザーが更新をクリックしたときにこれが発生しないようにするには、コメントに記載されているOdedのように実行し、投稿後にリダイレクトを実行します。Post-Redirect-Get with ASP.NET

リンクから:

protected void SaveClicked(object sender, EventArgs e)
{
    //save changes to database here

    //Redirect if all went well
    Response.Redirect("~/yourpage.aspx");
}
于 2012-12-26T20:02:21.757 に答える
0

この問題を回避するには、 PRGパターンを使用する必要があります。ページを更新すると、最後のリクエスト(getまたはPost)がサーバーに再送信されます。

解決策:クリックイベントでは、コードの後に​​Response.Redirectを使用します

btnSave_Click(object sender, EventArgs e)
{
    //Code here to create an Item   
    Response.Redirect(@"~\page.aspx"); 
}
于 2012-12-26T20:20:22.517 に答える