Как получить доступ к значению скрытого поля asp из UserControl в Javascript (getElementByID не работает)
Так что я застрял, пытаясь получить доступ к значению HiddenField в моем UserControl из моего JavaScript.
В моем пользовательском контроле у меня есть:
<asp:HiddenField ID="HiddenField1" runat="server" />
Этот пользовательский элемент управления используется в нескольких местах и иногда несколько раз на одной и той же странице, поэтому ClientIDMode = Static не является опцией, и он должен быть runat = server, так как мне также необходим доступ к нему в коде позади.
В моем JavaScript я пробовал следующее:
document.getElementById('<%= HiddenField1.ClientID %>');
document.getElementById('HiddenField1');
$find("<%= HiddenField1.ClientID %>");
Все они возвращают ноль. Я видел ряд "решений", предлагающих
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">
Значение устанавливается в коде через другие функции.
РЕДАКТИРОВАТЬ 2: Обобщенный мой пример кода
2 ответа
Я не мог найти способ заставить эту работу работать со скрытым полем, поэтому я прогнулся и просто изменил свой объект на asp:Label с CSSClass и сохранил значение в свойстве text.
Не лучшее решение, которое я знаю, но если у кого-то есть лучшее предложение, пожалуйста, дайте мне знать.
В коде может быть ваш код выглядит следующим образом
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>
Я надеюсь, что это поможет вам.