Asp.netグリッドにコマンドボタンを追加しました。そのボタンを使用してアクションを実行した後、グリッドを更新して新しいデータを反映します。 (基本的に、このアクションはグリッド行を複製します)。
今、ユーザーが使用してページを更新すると F5、警告メッセージが表示されます(情報をサーバーに再送信するため)。「再試行」を選択すると、アクションが自動的に繰り返されます。
これはasp.netの一般的な問題であることはわかっていますが、どうすればこれを最適に処理できますか?
POST- http://en.wikipedia.org/wiki/Post/Redirect/Get の後にGETを検索します-基本的に、現在のページにリダイレクトします。イベントの処理を終了しました。
何かのようなもの:
Response.Redirect(Request.RawUrl)
ポストバックパラダイムが必要ないと思われる場合は、ASP.NET MVCを確認することをお勧めします。
問題は、ボタンを押したときにasp.netボタンがフォームの投稿を実行することです。ボタンをリンクに置き換えると、問題は解消されます。 document.locationをページのアドレスに設定するJavaScript関数を実行するボタンを使用することもできます。
私がよく理解している場合は、グリッドに入力する前に、ポストバックの状況にあるかどうかを確認する必要があります。
あなたがそれを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"
これにより、ポストバックであるかどうかに関係なく、ページが読み込まれるたびにコントロールが更新されます。