禁用的文本框将丢失视图状态
本文关键字:视图状态 文本 | 更新日期: 2023-09-27 17:58:51
我正在根据所选的下拉菜单动态生成表单。表单由字段组成(十进制值的数据输入+几个文本字段)。必须在末尾添加所有十进制值,并用该值更新Total TextBox。总计文本框已禁用。
当我在用户输入值后单击表单上的"保存"按钮时,除了禁用的文本框外,整个表单都将保持在视图状态。当我启用文本框时,一切都很好。请注意,我正在动态生成表单,并使用javascript计算(添加所有十进制字段)更新总文本框的值。
附言:为了坚持这种观点,我做的一切都很好。
那么,启用/禁用对视图状态有什么影响
基本上,我添加了两个语句来使其工作。
txtBox.Attributes.Add("readonly", "readonly");
txtBox.Style.Add("color","gray");
当我使用txtBox.Enabled=false时,它没有持久化视图状态,而是在代码隐藏页中使用以上两条语句来实现
是的,禁用的表单元素不会将其值发送到服务器端,您可以查看请求头。禁用的元素未出现在"get"或"post"集合中。
如果您想要设置用户不能编辑它,您可以将它设置为只读。
在页面上添加javascript:
function enableTextBoxes() {
$("input[type='text'][disabled='disabled']").removeAttr("disabled");
}
并添加到服务器代码(在Page_Load、PreRender或其他方法中)
ClientScript.RegisterOnSubmitStatement(typeof(Page), "enableTextBoxes", "enableTextBoxes();");
如果使用UpdatePanels,则使用ScriptManager.RegisterOnSubmitStatement方法
在自定义文本框中继承文本框,并将此文本框添加到动态表单中。