【发布时间】:2011-02-03 15:47:46
【问题描述】:
当我需要收回 html 控件时,我偶然发现了这个问题,我在回发后使用 JavaScript 添加了客户端(由于服务器端验证 - 这不是可选的)。
请告诉我,如果我试图实现这一目标的方式是 cr*p 并且有更好的方式来做到这一点。
基本上,我正在做的是在用户点击“添加”时在页面上克隆一个文本框控件最多 10 次,并将每个文本框输入的值存储在隐藏字段中,以便在后面的代码中读取.这很好用,但是,当服务器端验证在回发后没有通过时,所有那些动态添加的(clone)texbox 都会消失,因为 ViewState 对它们一无所知。
我正在考虑 2 种可能的解决方案,这两种解决方案似乎都 hacky:
使用隐藏字段中的存储值重建文档 onload() 上的所有克隆文本框
将表单包装在 ajax 更新面板中并将克隆的 texbox 放置在其外部,因此,在回发时不会刷新屏幕的这一部分
现在,是否有可能以某种方式“更新” ViewState 以使其了解我使用客户端脚本添加的所有 html 控件?有更好的想法吗?我想用客户端脚本来实现这一点,因此不考虑在服务器端克隆文本框,对不起。
【问题讨论】:
-
我在页面上添加了 10 个隐藏控件。通过这种方式 ViewState 始终可以识别它们,我可以通过 JavaScript 向客户端隐藏/取消隐藏它们。
标签: javascript asp.net ajax viewstate client-side