我有一个aspx页面(default.aspx),我在其中加载一个用户控件(tree.ascx)。
在tree.ascx中有一个隐藏字段。
<asp:HiddenField ID="HiddenField1" runat="server"/>
我正在使用javascript为隐藏字段分配值。
document.getElementById('<%=HiddenField1.ClientID%>').value = "some text here";
alert(document.getElementById('<%=HiddenField1.ClientID%>').value);
document.getElementById('form1').submit();
警报显示值绝对正常。这意味着该值将被正确插入隐藏字段。
但是当我回发到服务器并检查值时,它总是为空。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
// do something.
}
else
{
string str = this.HiddenField1.Value;
}
}
我的代码总是在这里得到一个空字符串。不知何故,回发正在从隐藏字段中删除值。
可能是什么原因?
答案 0 :(得分:1)
尝试使用以下语法。即使在回发后它也适用于我。
ASPX代码
<asp:HiddenField runat="server" ID="aspHiddenField" />
<input type="hidden" id="inputHidden" value='<%= aspHiddenField.ClientID %>' />
JavaScript代码
var inputHidden = document.getElementById('inputHidden');
$("#" + inputHidden.value).val("some text");
背后的代码
if (!string.IsNullOrEmpty(aspHiddenField.Value))
{
//Your code goes here
}
答案 1 :(得分:0)
检查您的控件是否在母版页内,如果是,那么您需要像这样访问它,在母版页中的第一主页面&gt;查找控件的值,它肯定会正常工作。
答案 2 :(得分:0)
将隐藏字段放在更新面板中,如:
<asp:UpdatePanel ID="UpnlHidden" runat="server">
<ContentTemplate>
<asp:HiddenField ID="HiddenField1" runat="server"/>
</ContentTemplate>
</asp:UpdatePanel>
这对你有用: - )