我已禁用控件(标签、按钮等)的视图状态和用于测试目的的页面。
现在,当我在客户端更改标签的文本并拦截按钮的单击事件时,标签仍然显示服务器之前发送的文本。
那么发生了什么?我需要能够更改客户端上的数据并将其提供给服务器。
这是怎么做到的?
您需要做的是添加一个隐藏的输入。
在您的表单上添加:
<asp:HiddenField runat="server" id="hiddenHolder" />
然后在客户端单击事件时,当您更改标签的文本时,也会更改value
.hiddenHolder
在您后面的代码中,您可以通过以下方式获取值:
string LabelText = hiddenHolder.Value;
这样,您在客户端所做的更改可供服务器使用
标签spans
在客户端呈现;因此,您将无法在服务器端捕获更改,因为它们不是输入元素。
ASP.NET 给您一种能够以编程方式更改标签文本的错觉,这仅仅是因为它使用 ViewState 在每次回发时存储/检索此信息。通过禁用它,您将放弃使用此“功能”。