一尘不染

NET格式的客户端JavaScript ViewState更新

ajax

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

请告诉我是否要实现此目标的方法是cr * p,并且有更好的方法可以做到这一点。

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

我正在考虑2种可能的解决方案,这两种方法似乎都是很 棘手的

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

  • 将表单包装在ajax更新面板中,然后将克隆的texbox放在表单外部,这样就不会在回发时刷新屏幕的这一部分

现在,是否可以通过某种方式“ 更新
ViewState,使其了解我使用客户端脚本添加的所有html控件?还有更好的主意吗?我想通过客户端脚本来实现这一点,因此,不考虑在服务器端克隆文本框。


阅读 237

收藏
2020-07-26

共1个答案

一尘不染

您不能在客户端上修改ViewState。如果这样做,您将使viewstate无效并在回发时收到错误。

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

2020-07-26