2012-05-08 2 views
4

asp.net 레이블 웹 컨트롤이 있습니다. jQuery .html() 함수를 사용하여 텍스트를 동적으로 변경합니다. 서버에서 레이블의 현재 값을 소스하려고하면 페이지가로드 될 때 원래의 값이 표시됩니다. jQuery를 영구적 인 레이블로 변경하여 서버에서 소스를 변경할 수있는 방법이 있습니까?동적으로 변경된 asp.net 레이블의 값 얻기

+0

서버 측에서 변경하십시오. –

+0

자세한 내용을 기재 할 수 있습니까? 페이지가 게시되지 않은 경우 왜 이것이 문제가됩니까? 당신이 페이지 부하에서 그것을하고 있다면 다른 주석 기자가 말했듯이 서버 쪽에서 설정하십시오. 왜 클라이언트에 있어야합니까? –

답변

1

JQuery 변경 사항을 서버 측과 호환되는 다른 컨트롤로 미러링해야합니다.

숨겨진 필드

그래서

JQuery와

에서 레이블 변화를 읽을 예를 들어 다음이 서버 예에 유지됩니다이에 대한 변경 사항을 그림자 runat="server"을 mared하는 숨겨진 필드를 사용하여
$('#labelID').html('New Text'); 

$('#hiddenFieldID').val('New Text'); 

서버 측

,
string labelText = hiddenFieldID.value; 

귀엽지는 않지만 내가 해낸 유일한 방법입니다.

JQuery는 ViewState과 상호 작용하지 않으므로 JQuery를 사용한 변경 사항은 다시 게시 할 때 손실됩니다. 사람들이 MVC를 향해 가고 있다고 생각하는 이유 중 하나입니다. 클라이언트 측 변경시 포스트 백 아키텍처가 제대로 작동하지 않습니다.

+0

좋은 생각이지만 서버에 다시 게시가있을 경우에만 작동합니다. –

0

나는 이것을 잘못 할 수는 없지만 이것을 밖으로 할 수 있다고 생각하지 않습니다. 문제는 레이블이 HTML 양식 필드가 아니기 때문에 값이 다시 게시시 서버로 다시 보내지지 않으므로 ViewState 값 또는 업데이트 된 값 대신 기본값이 사용됩니다.

숨겨진 필드에서 레이블 값을 설정하는 곳에서 뭔가를 해킹 할 수 있습니다.이 필드는 다시 게시 될 때 서버로 다시 보내지고 변경된 경우 다시 게시 할 때 레이블 값을 채우는 데 사용됩니다.