2012-05-08 55 views
3

我有一個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

你難道沒有在Page_Load中任何代碼,只是如果別人.. 因爲?如果你從數據庫或其他東西獲取隱藏字段的數據,它會(HiddenField.Value)被覆蓋 – levi

回答

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 
} 
0

檢查,如果你的控制是一個母版頁內,如果是,那麼你需要訪問就像那樣,Master Master Page->在主頁面內查找控件的值,它肯定會工作。

0

放入更新面板的隱藏字段,如:

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

這會爲你工作:-)