2012-05-08 7 views
3

私はユーザーコントロール(tree.ascx)をロードしているaspxページ(default.aspx)を持っています。サーバー側から非表示のフィールド値を読み取ることができません

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(); 

アラートに値が表示されます。値が隠しフィールドに正しく挿入されることを意味します。

しかし、サーバーにポストバックして値をチェックしているときは、常にnullです。

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      // do something. 
     } 
     else 
     {     
      string str = this.HiddenField1.Value;    
     } 
    } 

マイコードは、ここでは常に空の文字列を取得しています。何らかの形でポストバックが隠しフィールドから値を消去しています。

どのような理由があることだろうか?

+0

あなたは除きPage_Loadの中に任意のより多くのコードを持っていない:-)あなたのために動作します

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

そのほかの場合... ため?データベースから隠されたフィールドのデータを取得した場合は、(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

チェックの後ろにあなたのコントロールは、マスターページ内であれば、それであれば、あなたはアクセスする必要がありますそれはマスターページ内の1st Master Page - >がコントロールの値を探しているように、確実に機能します。

0

場所のように更新パネルであなたの隠されたフィールド:これは

関連する問題