2012-05-08 3 views
3

사용자 정의 컨트롤 (tree.ascx)을로드하는 aspx 페이지 (default.aspx)가 있습니다.서버 측에서 숨겨진 필드 값을 읽을 수 없습니다.

tree.ascx 안에 숨겨진 필드가 있습니다.

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

자바 스크립트를 사용하여 숨겨진 필드에 값을 지정하고 있습니다.

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> 

이 다른 경우 ... 때문에? 만약 당신이 DB 또는 다른 뭔가 숨겨진 필드에 대한 데이터를 얻을 것이다, 그것을 (HiddenField.Value) 덮어 씁니다 – levi

답변

1

아래 구문을 사용해보십시오. 그것은 다시 게시 후에도 나를 위해 작동합니다. 이 경우

ASPX 코드

<asp:HiddenField runat="server" ID="aspHiddenField" /> 
<input type="hidden" id="inputHidden" value='<%= aspHiddenField.ClientID %>' /> 

자바 스크립트 코드

var inputHidden = document.getElementById('inputHidden'); 
$("#" + inputHidden.value).val("some text"); 

코드는 컨트롤이 마스터 페이지에있는 경우

if (!string.IsNullOrEmpty(aspHiddenField.Value)) 
{ 
//Your code goes here 
} 
0

확인 뒤에, 당신은 액세스해야 그것은 첫 번째 마스터 페이지 -> 마스터 페이지 내에서 컨트롤의 가치를 찾는 것처럼 확실합니다.

0

장소 같은 업데이트 패널에서 숨겨진 필드 : 이것은

관련 문제