【问题标题】:asp:hidden not able to access in code behindasp:hidden 无法在后面的代码中访问
【发布时间】:2015-09-16 14:06:30
【问题描述】:

我对 jQuery 和 asp.net (VB) 的经验很少。

我想要实现的是:
1. 我的页面有几个文本框,一个面板包含三个标签,一个 GridView 和一个 HiddenField。
2.页面加载时隐藏面板
3. 在页面上,用户在文本框内单击,然后按 F2 键
4.jQuery感知F2键并提取文本框类和值
5. HiddenField/HiddenBoxID 值也设置为文本框类
6.触发按钮的点击事件
7. 现在在后面的代码中提取 hiddenID 值并进行进一步处理
8. 使面板可见

我的 jQuery 看起来像这样:

// Extract TextBox ID and Text Value
var currentClass = $(this).attr('Class');
var currentVal = $('.' + currentClass + '').val();
$('#HiddenBoxID').val(currentClass);
$("#helpButton").trigger('click');

我的帮助按钮代码如下所示:

Dim HuntBoxID As String
HuntBoxID = HiddenBoxID.Value

这是问题所在,当面板设置为 visible=true 时,我可以从 jquery 获取 HiddenBoxID 值到代码后面,但是当我使面板 visible=false 时,我无法从 jQuery 发送值在后面编码。我不知道为什么?我正在使用 chrome 浏览器,在调试控制台 (F12) 中,我可以看到在 currentClass 和 currentVal 中设置的值。
有人可以告诉我如何实现上述目标。
也有人可以告诉我我做错了什么,一些代码示例会很有帮助。

【问题讨论】:

    标签: javascript jquery asp.net vb.net


    【解决方案1】:

    当您将控件的 Visible 属性设置为 false 时,该控件的任何 HTML 标记都不会发送到客户端。就客户而言,该控制不存在。您可以通过在客户端查看 HTML 源代码来验证。

    不要使用 Visible 属性,而是使用 CSS 样式。这里是 C#,但 VB.NET 语法应该类似:

    HiddenBoxID.Style.Add("display", "none");
    

    当您使用 CSS 样式对其进行操作时,标记仍会发送到客户端,因此您可以稍后使用客户端代码显示该元素。例如,使用 jQuery:

    $('#HiddenBoxID').show();
    

    【讨论】:

    • 我尝试对 asp:panel 做同样的事情,首先我在页面加载(在 aspx 本身中)时显示:none 然后,当页面加载完成时,我在文本框内单击,然后我调用我尝试做显示的jQuery函数:块,在后面的代码中也做了同样的事情。这样做的结果是,我在 jQuery 中获得了文本框类和文本框值,但是当我在后面的代码中访问它时,它却是空的。
    • @Abb 这可能不相关,可能与您加载页面的方式有关。很难说,因为你没有提供MCVE
    【解决方案2】:

    自从我做了你提到的事情已经有一段时间了,特别是使用客户端 javascript/jQuery ......但我的猜测是你无法获取客户端 ID,因为 asp.net 甚至没有发送控件到客户端,因为它是可见的=false。

    我可能完全错了...但是当您说您在页面加载时立即隐藏面板...我假设您在后面的代码中执行该服务器端,对吗?也许尝试将其设置为隐藏在 jQuery 中。换句话说,确保控件被发送到客户端,然后立即使用 jQuery 隐藏它。

    要查看的另一件事是按 F12 并查看您隐藏的 html 在客户端的源代码中是否可见。如果不是,则 asp.net 甚至不会将控件发送给您的客户端,因此您无法获取客户端 ID。

    【讨论】:

      猜你喜欢
      • 2020-01-11
      • 2010-11-21
      • 2011-09-05
      • 1970-01-01
      • 2017-02-27
      • 1970-01-01
      • 1970-01-01
      • 2013-12-02
      • 2017-03-22
      相关资源
      最近更新 更多