【问题标题】:value set by javascript is not saved in asp.netjavascript设置的值未保存在asp.net中
【发布时间】:2010-02-18 17:42:45
【问题描述】:

我在 gridview 控件中有两个文本框和一个标签,我正在向第二个文本框 onblur 事件属性添加一个 javascript 函数并在标签中显示结果,该函数工作正常并且结果显示在标签中,但是当我将网格数据保存到数据库中时,标签返回 0 或空,但我能够看到值,如何克服这个问题。

感谢和问候

【问题讨论】:

    标签: asp.net javascript events onblur


    【解决方案1】:

    您的标签不会保留在 ViewState 中,因为它不包含为“表单”控件。您可以使用隐藏的文本框来完成此操作,可能还有更好的方法。

    【讨论】:

    • 我尝试使用隐藏字段,它在某些系统上工作,而不是在某些系统上,是否有任何浏览器设置阻止此操作。不工作的浏览器是firefox 3.5.5 有什么输入吗?
    【解决方案2】:

    这是回答您问题的链接。

    http://www.mikesdotnetting.com/Article/65/ViewState-form-fields-labels-and-Javascript

    如果我理解正确,(如果我错了,请纠正我) 它是IPostBackDataHandler (more info) 在客户端(Javascript)更改时处理服务器输入字段控件中的数据。标签控件不是输入字段,因此不会保存在客户端中所做的更改。

    这是来自上面链接的引用:

    ViewState 的工作是管理任何 服务器初始状态的变化 控件,如果进行了这些更改 以编程方式在服务器上,或者如果 用户交互所做的更改是 传递给服务器。这不 包括恢复形式的价值 输入,例如 TextBoxes 或 CheckBox 中选定的项目。有 一个常见的误解,形成 值由 ViewState 管理。他们 不是。从没有过。这些值 纯粹由管理和恢复 IPostBackDataHandler。

    IPostBackDataHandler 是一个巨大的福音 致从小长大的网络开发者 在其他服务器端技术上, 如经典的 ASP、PHP 等。在 “过去”的日子,我们曾经不得不 手动将每个表单域连接到 显示最初发布的价值, 这样就不会向用户显示 一个空的表格要全部填写 再次,如果它在服务器端失败了 验证。 IPostBackDataHandler 的意思 我们再也不必这样做了。

    正如另一个答案中提到的,使用隐藏值来保存 Javascript 所做的更改应该可以工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-07
      • 1970-01-01
      • 2014-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多