当我需要撤回html控件时,我偶然发现了这个问题,我在回发(由于服务器端验证--这不是可选的)之后使用JavaScript 添加了客户端。
请告诉我,如果我试图实现这是cr*p,有一个更好的方法来做到这一点。
基本上,我所做的是在页面上克隆一个textbox控件最多10次,当用户点击"Add“,并将每个文本框中输入的值存储在隐藏的字段中,以便在后面的代码中读取。但是,如果服务器端验证在回发后没有通过,那么所有动态添加(克隆)文本框就会消失,因为ViewState对它们一无所知。
我正在考虑两种可能的解决方案,两者似乎都很麻烦。
上刷新屏幕的这一部分。
现在,是否有可能以某种方式“更新”ViewState,使其知道我使用客户端脚本添加的所有html控件?有更好的主意吗?我想用客户端脚本来实现这一点,因此不考虑在服务器端克隆文本框,对不起。
发布于 2011-02-03 15:59:55
不能在客户端修改ViewState。如果这样做,您将使viewstate失效,并在回发时收到一个错误。
在您的示例中,您可能需要考虑使用javascript和jQuery来呈现上的文本框,其值存储在隐藏字段中。我建议查看jQuery模板,特别是如果您可以将数据存储为JSON在隐藏字段(http://weblogs.asp.net/scottgu/archive/2010/10/04/jquery-templates-data-link-and-globalization-accepted-as-official-jquery-plugins.aspx)中。
https://stackoverflow.com/questions/4888280
复制相似问题