18

asp.net グリッドにコマンド ボタンを追加しました。そのボタンを使用してアクションを実行した後、グリッドを更新して新しいデータを反映します。(基本的に、このアクションはグリッド行を複製します)。

ユーザーが を使用してページを更新するF5と、(情報をサーバーに再送信するための) 警告メッセージが表示され、「再試行」を選択すると、アクションが自動的に繰り返されます。

これは asp.net の一般的な問題であることはわかっていますが、これをどのように処理するのが最善でしょうか?

4

7 に答える 7

36

POST 後に GET を検索します - http://en.wikipedia.org/wiki/Post/Redirect/Get - 基本的に、イベントの処理が終了したら、現在のページにリダイレクトします。

何かのようなもの:

Response.Redirect(Request.RawUrl)

于 2009-02-16T13:20:14.923 に答える
2

問題は、ボタンを押すとasp.netボタンがフォーム投稿を実行することです。ボタンをリンクに置き換えると、問題は解決するはずです。document.locationをページのアドレスに設定するjavascript関数を実行するボタンを使用することもできます。

于 2009-02-16T14:04:05.083 に答える
2

ポストバック パラダイムが必要ないと思われる場合は、ASP.NET MVC を参照してください。

于 2009-02-16T13:06:01.573 に答える
1

私がよく理解していれば、グリッドにデータを入力する前に、ポストバック状況にあるかどうかを確認する必要があります。
でそれを行うと仮定するとPage_Load、次のように操作をポストバック テストで囲むだけです。

private void Page_Load(object sender, EventArgs e)
{
    if(!this.IsPostBack)
    {
        // populate grid
    }
}
于 2009-02-16T13:08:04.233 に答える
1

response.Redirect(Request.Url.ToString()); を呼び出す必要があります。

または、グリッドを updatepanel でラップし、すべてのコマンドの後にデータソースをグリッドにバインドすることができます

于 2009-02-16T13:20:57.260 に答える
1

<asp:Repeater>タグ内にこれを入れます:

EnableViewState="false"

これにより、ポストバックかどうかに関係なく、ページが読み込まれるたびにコントロールが更新されます。

于 2009-04-02T19:08:01.557 に答える