asp.net格式的客户端JavaScript ViewState更新

时间:2011-02-03 15:47:47

标签: javascript asp.net ajax viewstate client-side

当我需要撤消html控件时,我偶然发现了这个问题我在回发后使用JavaScript 添加了客户端(由于服务器端验证 - 这不是可选的)。< / p>

请告诉我,我试图实现这一目标的方式是否为cr * p,并且有更好的方法。

基本上,我正在做的是当用户点击“添加”并在隐藏字段中的每个texbox中存储输入的值以在后面的代码中读取时,在页面上克隆文本框控件最多10次。这很好,但是,当回发后服务器端验证没有通过时,所有那些动态添加(克隆)texbox都会消失,因为ViewState对它们一无所知。

我正在考虑两个可能的解决方案,两者似乎 hacky

  • 使用隐藏字段中的存储值重建文档onload()上的所有克隆文本框

  • 将表单包装在ajax更新面板中并将克隆的texbox放在其外面,因此,不在回发时刷新屏幕的这一部分

现在,有可能以某种方式“更新”ViewState使其知道我使用客户端脚本添加的所有html控件吗?有更好的想法吗?我想用客户端脚本实现这一点,因此不考虑在服务器端克隆文本框,抱歉。

1 个答案:

答案 0 :(得分:5)

您无法在客户端修改ViewState。如果这样做,您将使视图状态无效并在回发时收到错误。

在您的情况下,您可能需要考虑使用javascript和jQuery在文档就绪事件中呈现文本框,并将值存储在隐藏字段中。我建议看看jQuery模板,特别是如果你可以将数据存储为隐藏字段中的JSON(http://weblogs.asp.net/scottgu/archive/2010/10/04/jquery-templates-data -Link-和全球化接受的-AS-官方-jQuery的plugins.aspx)。