禁用的文本框丢失viewstate

问题描述

| 我根据所选的下拉列表动态生成表单。 表单由字段组成(十进制值的数据输入+几个文本字段)。必须在末尾添加所有十进制值,并使用该值更新Total TextBox。总计文本框已禁用。 当用户输入值后,当我单击表单上的“保存”按钮时,除禁用的文本框外,整个表单都保留在viewstate中。启用文本框后,一切正常。提醒您,我正在动态生成表单,并使用javascript计算(添加所有十进制字段)更新了总文本框的值。 附言我为保持viewstate所做的一切正确。 那么启用/禁用的内容与viewstate有关     

解决方法

        基本上,我添加了两个语句来使其正常工作。
txtBox.Attributes.Add(\"readonly\",\"readonly\");
txtBox.Style.Add(\"color\",\"gray\");
当我使用txtBox.Enabled = false时,它不会持久保存viewstate,而是在我的代码隐藏页面中使用了上面的两个语句来替代     ,        是的,禁用的表单元素不会将其值发送到服务器端,您可以查看请求标头。禁用的元素未出现在\“ get \”或\“ post \”集合中。 如果要让设置用户无法编辑它,可以将其设置为只读。     ,        在页面上添加JavaScript:
function enableTextBoxes() {
            $(\"input[type=\'text\'][disabled=\'disabled\']\").removeAttr(\"disabled\");
        }
并添加到服务器代码(在Page_Load,PreRender或其他方法中)
ClientScript.RegisterOnSubmitStatement(typeof(Page),\"enableTextBoxes\",\"enableTextBoxes();\");
如果使用UpdatePanels,则使用ScriptManager.RegisterOnSubmitStatement方法     ,        请创建自定义文本框,而不要使用实际的文本框实例。 继承自定义文本框中的文本框,然后以动态形式添加此文本框。     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...