【问题标题】:Client-side JavaScript ViewState Update in asp .net formsasp .net 表单中的客户端 JavaScript ViewState 更新
【发布时间】: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


【解决方案1】:

您不能在客户端修改 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)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-10
    • 1970-01-01
    • 2018-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-15
    相关资源
    最近更新 更多