2009-09-17 10 views
0

Stack Overflow에서 비슷한 질문을했지만이 특정 문제에 대한 해결책을 찾을 수 없었습니다. 나는 그 안에 업데이트 패널이있는 단순한 ASP.NET 페이지를 가지고있다.ASP.NET : 제출하기 전에 HiddenField 값을 수정하는 JavaScript

이 업데이트 패널에는 HiddenField 컨트롤이 있으며, 사용자 정의 JavaScript를 통해 설정/업데이트됩니다. 값이 입니다. 방화범 입력을 사용하여 DOM에서 확인할 수 있습니다.

다음으로 HiddenFieldHiddenField의 값을 수정하는 JavaScript를 호출하는 LinkButton이 있습니다 (이 작동). LinkButton에는 값이 수정 된 후에 실행되는 OnClick 처리기가 있습니다.

그러나 OnClick 처리기에서 자바 스크립트로 설정 한 값이 아닌 HiddenField의 초기 값을 얻습니다!

왜 이런가요? 이 경우가 "PEBKAC"입니까?

편집 :TextBox와 동일한 것을 시도해도 성공하지 못했습니다. 또한 아무런 성공도없이 양식을 제출하기 전에 Firebug를 사용하여 수동으로 값을 수정 해 보았습니다.

편집 2 : 난 그냥 Page_Load 일을 엉망으로 된 OnClick 핸들러 전에 호출되는 것을 깨달았다. 나는 다른 사람들이 같은 문제를 겪을 수 있으므로 질문을 삭제하지 않을 것이며이 질문을 가치있게 생각할 것입니다.

+0

아마도이 코드의 하단에 어떤 코드가 도움이 될 수 있습니다. 몇 가지 테스트를 해본 결과 'OnClientClick'을 사용하여 숨겨진 필드의 값을 설정 한 다음 서버의 'OnClick'이벤트 핸들러에서 검색 할 수 있습니다. – Phaedrus

+0

내 코드에서 문제가 발견되었으며이를 나타 내기 위해 질문이 업데이트되었습니다. –

답변

0

AJAX 업데이트 패널에서 제공하는 EndRequestHandler 이벤트를 사용하여 수행해야합니다.

이 제발 봐 ->

http://www.codeproject.com/KB/ajax/AfterAjaxUpdate.aspx?display=Print

+1

그건 그냥 AJAX 요청 후에 일어나는 일들을 다루는 것 같지만, 단지 새로운 값에 접근하기 위해서 내 OnClick 핸들러를 원한다. –

+0

AJAX는 업데이트 패널 안에 컨트롤이 있으므로 고려해야합니다. – Bhaskar

0

어떻게 클라이언트의 새로운 입력을 생성하는? 대신 서버에서이 작업을 수행 할 수 있습니까?

이렇게하면 OnClickOnClientClick 대신 OnClick 만 사용할 수 있습니다.

+0

서버에 새 입력을 생성 할 수 없습니다. –

1

이것은 viewstate가 당신을 (종종) 나쁜 농담으로 만드는 것처럼 보입니다. 내가 추측하는 것은 페이지가 다시 게시 될 때 숨겨진 필드가 Viewstate에 포함 된 값으로 초기화된다는 것입니다.

직접 시도하십시오. yourHiddenField.Value을 통해 값에 직접 액세스하지 말고 페이지의 OnInit에 Request.Forms[yourHiddenField.UniqueId]으로 가져 와서 HiddenField로 캐스팅하고 값을 추출하십시오. 이것이 올바른 구문인지 여부는 확실하지 않습니다. "게시 된"값은 내가 기억한다면 어딘가에 요청 개체에 있어야합니다. 거기에 가치가 있는지 확인하십시오. 거기에 도착하면 문제는 페이지의 OnInit 이벤트 뒤에 매핑 된 viewstate입니다. 그렇다면 우리는 그 해결책을 찾아야합니다. ...

관련 문제