【问题标题】:How to access asp hiddenfield value from UserControl in Javascript (getElementByID not working)如何在 Javascript 中从 UserControl 访问 asp hiddenfield 值(getElementByID 不起作用)
【发布时间】:2018-05-22 09:49:58
【问题描述】:

所以我在尝试从我的 JavaScript 访问 UserControl 中的 HiddenField 值时遇到了困难。

在我的用户控件中,我有:

<asp:HiddenField ID="HiddenField1" runat="server" />  

此用户控件在多个地方使用,有时在同一页面上使用多次,因此 ClientIDMode = Static 不是一个选项,它必须是 runat = server 因为我还需要在后面的代码中访问它。

在我的 JavaScript 中,我尝试了以下方法:

document.getElementById('<%= HiddenField1.ClientID %>');
document.getElementById('HiddenField1');
$find("<%= HiddenField1.ClientID %>");

所有这些都返回 null。我看到了一些“解决方案”的建议

document.getElementById('ctl00_ContentPlaceHolder1_HiddenField1')

但这显然会给可重用性带来问题。

编辑: 这样生成的html是:

<input type="hidden" name="ctl00$ctl00$MainContent$MainContent$$ctl00$SomeUserControl$someOtherUserControl1$HiddenField1" id="MainContent_MainContent_SomeRepeater_SomeUserControl_0_someOtherUserControl1_0_HiddenField1_0" value="353">

值是通过其他函数在后面的代码中设置的。

EDIT2:概括我的代码示例

【问题讨论】:

  • 右键点击网页的view source。检查您是否能够看到隐藏字段输入项。然后现在从那里复制id 并尝试getElementById。
  • 查看源码时,document.getElementById('&lt;%= hfInsuranceCompanyID.ClientID %&gt;'); 的值是多少?是否没有正确提供 ClientID?
  • 能否将您的控件生成的html粘贴到问题中,我们有很多可以使用的jquery选择器。
  • 我已经编辑了 Gagan 的原帖
  • @Matt: document.getElementById('&lt;%= hfInsuranceCompanyID.ClientID %&gt;'); 没有给出期望输出怎么办?

标签: javascript asp.net user-controls hiddenfield


【解决方案1】:

我找不到使用隐藏字段的方法,所以我只好将对象更改为带有 CSSClass 的 asp:Label 并将值存储在 text 属性中。

不是我知道的最佳解决方案,但如果有人有更好的建议,请告诉我。

【讨论】:

  • 没有其他建议,很遗憾这就是答案。
【解决方案2】:

在代码后面可能是你的代码看起来像这样

public void test()
{
   hdnvalue.Value = "Test";
    //After assign the value you should call client side function
   ClientScript.RegisterStartupScript(GetType(), "Script", "<script 
   language='javascript'>gethidden()</script>", false);
}

在javascript函数中应该这样使用

<script language="javascript" type="text/javascript">
 function gethidden() {
    var hdn = document.getElementById('<%=hdnvalue.ClientID%>');
    alert(hdn.value);
 }
</script>

希望对你有所帮助。

【讨论】:

  • 我很欣赏这个建议,但是我需要在所有客户端访问它。这样做的目的是执行 AJAX 调用并提高页面性能(该项目中的视图状态非常大,因此需要尽量减少回发)。
  • 您好,您提到了“通过其他函数在后面的代码中设置值”。你在服务器端赋值,上面的代码对你有用。
  • 您好 Angappan.S,上面的代码不适用于我的目的,因为该值仅在后面代码中的 page_load 处设置,但需要在用户与其他对象交互后访问客户端这页纸。这一切都是为了避免回发并提高页面的性能。回发是不可行的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-17
  • 1970-01-01
  • 2010-12-22
  • 1970-01-01
  • 1970-01-01
  • 2019-08-18
  • 1970-01-01
相关资源
最近更新 更多