【问题标题】:ASP.NET Accessing AJAX created controls on postBackASP.NET 访问 AJAX 在 postBack 上创建了控件
【发布时间】:2011-08-03 14:36:55
【问题描述】:

我在运行时使用 AJAX 回调到 Web 服务(.asmx 文件)生成 2 个下拉框和一个 CheckBoxList 控件。该服务在服务器上创建两个 Dropdowns 和 CheckBoxList 并将渲染的 html 作为字符串返回,该字符串在运行时使用 javascript 函数注入到网页中。

在 postBack 期间,我想获取两个下拉框的值,并确定哪些复选框(如果有)已被勾选。

我是否认为在运行时注入页面的 HTML 在回发期间不会发送回服务器?如果是这种情况,获取我的价值观最明智的方法是什么?

我认为获取动态控件值的最佳方法是使用 javascript 读取值并将它们写入作为页面类一部分的隐藏字段,就在回发之前。

如果有更好的方法,请分享!

【问题讨论】:

  • 我能想到的三种常见方式是; 1 使用 AJAX 回发整个表单, 2 使用 Request.Form 集合获取当前值(不适用于所有控件,适用于大多数具有文本属性的控件), 3 将数据存储在隐藏的输入字段中和/或饼干。

标签: javascript asp.net ajax postback viewstate


【解决方案1】:

在回发期间检索值的一种方法是将值保存在隐藏字段中,正如元素名称所暗示的那样,该字段在页面上是不可见的 -

<asp:HiddenField id="countrySelected" value="" />

在您的 javascript 中回发之前,您可以填写您需要的信息 -

document.getElementById('countrySelected').value = 'USA';

然后您可以在您的代码隐藏中选择要使用的值 -

countrySelected.value

【讨论】:

    【解决方案2】:

    由于 web 服务创建了稍后注入页面的 html,因此它们不是服务器控件,因此服务器无法知道它们的存在。在我看来,隐藏的 html 元素是处理这种情况的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-22
      • 1970-01-01
      • 1970-01-01
      • 2012-11-03
      • 2015-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多