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

Гро*_*ный 3 javascript asp.net viewstate ajax client-side

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

请告诉我,如果我想要实现这个目标的方式是cr*p并且有更好的方法可以做到这一点.

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

我正在考虑两种可能的解决方案,这两种解决方案看起来都很糟糕:

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

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

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

Dav*_*ace 5

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

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