asp.net グリッドにコマンド ボタンを追加しました。そのボタンを使用してアクションを実行した後、グリッドを更新して新しいデータを反映します。(基本的に、このアクションはグリッド行を複製します)。
ユーザーが を使用してページを更新するF5と、(情報をサーバーに再送信するための) 警告メッセージが表示され、「再試行」を選択すると、アクションが自動的に繰り返されます。
これは asp.net の一般的な問題であることはわかっていますが、これをどのように処理するのが最善でしょうか?
POST 後に GET を検索します - http://en.wikipedia.org/wiki/Post/Redirect/Get - 基本的に、イベントの処理が終了したら、現在のページにリダイレクトします。
何かのようなもの:
Response.Redirect(Request.RawUrl)
問題は、ボタンを押すとasp.netボタンがフォーム投稿を実行することです。ボタンをリンクに置き換えると、問題は解決するはずです。document.locationをページのアドレスに設定するjavascript関数を実行するボタンを使用することもできます。
ポストバック パラダイムが必要ないと思われる場合は、ASP.NET MVC を参照してください。
私がよく理解していれば、グリッドにデータを入力する前に、ポストバック状況にあるかどうかを確認する必要があります。
でそれを行うと仮定するとPage_Load
、次のように操作をポストバック テストで囲むだけです。
private void Page_Load(object sender, EventArgs e)
{
if(!this.IsPostBack)
{
// populate grid
}
}
response.Redirect(Request.Url.ToString()); を呼び出す必要があります。
または、グリッドを updatepanel でラップし、すべてのコマンドの後にデータソースをグリッドにバインドすることができます
<asp:Repeater>
タグ内にこれを入れます:
EnableViewState="false"
これにより、ポストバックかどうかに関係なく、ページが読み込まれるたびにコントロールが更新されます。