如何从Javascript中的UserControl访问asp隐藏字段值(getElementByID无法正常工作)

时间:2018-05-22 09:49:58

标签: javascript asp.net user-controls hiddenfield

所以我一直试图从我的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:广义化我的代码示例

2 个答案:

答案 0 :(得分:0)

我无法找到使用隐藏字段进行此操作的方法,因此我陷入困境,只是将对象更改为带有CSSClass的asp:Label并将值存储在text属性中。

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

答案 1 :(得分:0)

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

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>

我希望对你有所帮助。