データベースから情報をロードする asp.net サイト (C# バックエンド) があります。ユーザーは、追加/削除ボタンをクリックして情報を保存できます。このボタンは、ユーザーが保存したかどうかに基づいて動的に変化します。コマンド名と引数を使用してデータを渡しています。ボタンが押されると、同じページにとどまり、外観を更新するだけです (ポストバックを行います)。これは、通常の状況ではうまく機能しています。ただし、ユーザーがページから移動してからページに戻ると、押されたボタンの OnClick メソッドが再実行されます。
戻るボタンを使用するとポストバックを実行していることはわかっていますが、最後の onclick が発生するのはなぜですか? これは正常な動作ですか?キャッシュを無効にして、ページを期限切れにしようとしましたが、すべてが機能しません。データはリピーターに表示され、ViewState が有効になっています...私が読んだことから、それが原因かどうか疑問に思っています。ただし、ViewState が無効になっていると、ポストバックに結果が表示されません。それが問題である場合、Viewstate を使用せずに Repeater でデータを動的に更新する他の方法はありますか? 参考になるかわかりませんが、コマンド名と引数を示すボタンのマークアップを以下に示します。
<asp:Repeater ID="ItemRepeater" runat="server" EnableViewState="true">
<!--Lots of other code before pressed button-->
<asp:Button ID="additembutton" runat="server" OnClick="AddDelOnClick" Text='<%# textToDisplay((int)Eval("isSaved")) %>'
CommandName='<%# DataBinder.Eval(Container.DataItem, "isSaved").ToString().Trim() %>'
CommandArgument='<%# DataBinder.Eval(Container.DataItem, "itemnumber").ToString().Trim() + "~" +
DataBinder.Eval(Container.DataItem, "department").ToString().Trim() + "~" +
DataBinder.Eval(Container.DataItem, "itemdescription").ToString().Trim() + "~" +
DataBinder.Eval(Container.DataItem, "isSaved").ToString().Trim()%>'
CssClass='<%# cssClassToDisplay((int)Eval("isSaved")) %>' /></td></tr>