2011-09-02 3 views
1

DOM로드시 컨트롤 값을 설정합니다. lblVal 그것은 이전 값의가 나에게 충격적인했다이것은 텍스트 상자 및 레이블의 의도 된 동작입니까?

protected void Unnamed1_Click(object sender, EventArgs e) 
    { 
     Debug.Write(textBox2.Text); 
     Debug.Write(lblVal.Text); 
    } 

것은 :이 코드를 내 버튼을 클릭 이벤트 처리기에서

<script type="text/javascript"> 
     $(document).ready(function() { 
      $('#<%=textBox2.ClientID %>').val($('#<%=textBox1.ClientID %>').val()); 
      $('#<%=lblVal.ClientID %>').html($('#<%=textBox1.ClientID %>').val()); 

     }); 
    </script> 

     <asp:TextBox runat="server" ID="textBox1" Text="Test data" /> 
     <asp:TextBox runat="server" ID="textBox2" /> 
     <asp:Label runat="server" ID="lblVal" Text="Old Data" /> 
     <asp:Button runat="server" Text="Click Me" onclick="Unnamed1_Click" /> 

: 나는 영문 페이지에서이 슈퍼 간단한 코드가 있습니다. javascript의 설정 값은 실제로 label에 영향을 미치지 않지만 textbox2의 데이터는 서버에 반영됩니다. 텍스트 상자 및 레이블의 의도 된 동작입니까? 이전에 이런 일이 발생하지 않았기 때문에 이것은 나에게는 놀라운 일이었습니다.

+0

아니요. 값을 유지해야합니다. 내가 JS와 텍스트 상자 및 숨겨진 필드의 값을 변경하고 다시 서버에 게시 확인 .... –

+0

@ 브라이언 : 나는 숨겨진 필드에 대해 얘기하지 않습니다. 레이블 값을 변경하고 시험해 볼 수 있습니다. – TCM

답변

2

레이블은 양식 필드가 아닌 HTML label 태그로 렌더링됩니다. 따라서 양식 제출시 게시되는 값이없고 포스트 백에서 복원 한 값은 ViewState에서 가져온 값입니다. 양식 필드 (예 : input이되는 ASP TextBox)는 값을 게시하며 viewstate의 값을 대체합니다.

당신은 자바 스크립트로 업데이트하는 숨겨진 입력을 대신 가지고 돌아올 수 있습니다. 그런 다음 포스트 백에서 대신 그 내용으로 레이블을 업데이트하십시오.

+0

사실 저희 회사에서는 청구 할 총 금액이 라벨에 저장되는 하나의 지불 시스템을 개발 중입니다. 그래서 나는 그것을 해킹 할 수 있는지 여부를 점검하면서 Firebug를 통해 가치를 바꾸었지만 이전의 가치는 청구되었다 : p. 시스템을 해킹 할 수 없었습니다. – TCM

0

asp : 레이블 컨트롤은 스팬으로 렌더링되므로 양식 요소가 아니며 변경된 내용은 서버에 게시되지 않습니다.

관련 문제