我有一个从数据库加载信息的 asp.net 站点(C# 后端)。它允许用户通过单击添加/删除按钮来保存信息。这个按钮会根据用户是否保存而动态变化。我正在使用命令名和参数来传递数据。按下按钮时,它会停留在同一页面上,并且只会更新外观(执行回发)。这在正常情况下运行良好。但是,如果用户导航离开页面,然后返回页面,它会为按下的按钮重新执行 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>