web-dev-qa-db-ja.com

asp.netでポストバックアクションの後にページを更新します

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

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

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

17
MOZILLA

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

何かのようなもの:

Response.Redirect(Request.RawUrl)

34
chris

ポストバックパラダイムが必要ないと思われる場合は、ASP.NET MVCを確認することをお勧めします。

2
Mehrdad Afshari

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

2
Rune Grimstad

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

private void Page_Load(object sender, EventArgs e)
{
    if(!this.IsPostBack)
    {
        // populate grid
    }
}
1

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

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

1
Barbaros Alp

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

EnableViewState="false"

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

1
pistolilla