ASP.NET : JavaScript 제출하기 전에 Hiddenfield의 가치 수정
-
08-07-2019 - |
문제
스택 오버플로에서 비슷한 질문을 살펴 보았지만이 특정 문제에 대한 해결책을 찾을 수 없었습니다. 내부에 업데이트 패널이있는 간단한 (실제로는 아니지만 척하자) ASP.NET 페이지가 있습니다.
이 업데이트 패널에는 a가 있습니다 HiddenField
내 자신의 사용자 정의 JavaScript를 통해 설정/업데이트 될 값으로 제어합니다. 가치 ~이다 Firebug를 사용하여 DOM에서 볼 수 있듯이 업데이트되었습니다.
이것 옆 HiddenField
~이있다 LinkButton
JavaScript를 호출하여 HiddenField
사용 OnClientClick
(이것은 작동합니다). 그만큼 LinkButton
또한 OnClick
값이 수정 된 후 실행되는 핸들러.
그러나, OnClick
핸들러, 나는 초기 가치를 얻습니다 HiddenField
그리고 JavaScript가 설정 한 값이 아닙니다!
왜 이런거야? 이것은 "의 경우입니까?"페크 박"?
편집하다: a와 같은 것을 시도했습니다 TextBox
아무런 성공도없이. 또한 양식을 제출하기 전에 Firebug를 사용하여 수동으로 값을 수정하려고 시도했습니다.
편집 2 : 방금 깨달았습니다 Page_Load
전에 호출됩니다 OnClick
물건을 엉망으로 만들고있는 핸들러. 다른 사람들이 같은 문제를 겪을 수 있으므로 질문을 삭제하지 않을 것이며이 질문이 가치가 있다고 생각할 수 있습니다.
해결책
AJAX 업데이트 패널에서 제공하는 EndRequestHandler 이벤트를 사용하여 수행해야합니다.
이것을보세요->
http://www.codeproject.com/kb/ajax/afterajaxupdate.aspx?display=print
다른 팁
이것은 ViewState가 당신을 나쁜 농담으로 만드는 것처럼 보입니다 (자주). 내가 생각하는 것은 페이지가 다시 게시되면 숨겨진 필드가 ViewState에 포함 된 값으로 초기화된다는 것입니다.
한 가지 시도 : 값에 직접 액세스하지 마십시오. yourHiddenField.Value
그러나 페이지의 oninit에서 Request.Forms[yourHiddenField.UniqueId]
그리고 그것을 숨겨진 필드에 던져 값을 추출하십시오. 이것이 올바른 구문인지 확실하지 않습니다. "게시 된"값은 내가 옳은 것을 기억한다면 어딘가에 요청 오브젝트에 있어야합니다. 그곳에서 가치를 얻는 지 확인하십시오. 당신이 그것을 거기에 가져 오면, 문제는 페이지의 Oninit 이벤트 이후에 다시 매핑되는 ViewState입니다. 그런 다음 우리는 그것에 대한 해결책을 찾아야합니다 ...
클라이언트에 새 입력을 어떻게 생성하고 있습니까? 대신 서버에서 이것을 수행 할 수 있습니까?
이런 식으로 당신은 정당한 것을 사용할 수 있습니다 OnClick
두 가지 대신 OnClick
그리고 OnClientClick
.