无法从服务器端读取隐藏的字段值

时间:2012-05-08 07:03:55

标签: javascript asp.net postback

我有一个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;              
        }
    }

我的代码总是在这里得到一个空字符串。不知何故,回发正在从隐藏字段中删除值。

可能是什么原因?

3 个答案:

答案 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>

这对你有用: - )