문제

런타임 제한으로 인해 이전 버전의 ASP.NET AJAX를 사용하고 있습니다. 업데이트 패널 내에 ASP.NET 유효성 검사기를 배치하면 작동하지 않습니다.이러한 작업을 수행하는 트릭이 있습니까? 아니면 AJAX 툴킷과 함께 제공되는 ValidatorCallOut 컨트롤을 사용해야합니까?

도움이 되었습니까?

해결책

.NET 2.0의 원래 릴리스 (RTM)를 실행중인 것 같습니다.

2007 년 초까지는 유효성 검사기 컨트롤이 UpdatePanels와 호환되지 않았습니다. 이 문제는 .NET Framework의 SP1에서 해결되었습니다.

문제의 원인은 UpdatePanel이 페이지의 마크 업 변경을 감지 할 수 있지만 스크립트를 올바르게 추적 할 수있는 방법이 없다는 것입니다. 유효성 검사기는 스크립트에 크게 의존합니다. 부분 포스트 백 중에 스크립트가 날아가거나 업데이트되지 않거나 의도 한대로 실행되지 않습니다.

초기 베타에서 MS는 UpdatePanel이 다시 렌더링하거나 실행하는 데 필요한 스크립트를 추측 하도록했습니다. 잘 작동하지 않아서 제거해야했습니다.

즉각적인 문제를 해결하기 위해 Microsoft는 Validators.DLL이라는 새 DLL에 패치 된 버전의 유효성 검사기 클래스를 출시하고 ASP.NET에 실제 클래스 대신 이러한 클래스를 사용하도록 지시하는 방법을 설명했습니다. 해당 DLL 이름을 검색하는 경우 자세한 정보를 찾을 수 있습니다. 이 블로그 게시물 도 참조하세요. .

이것은 임시 방편 조치 였으므로 사용하지 말아야합니다 가능하면 피해야합니다 .

문제에 대한 실제 해결책은 .NET 2.0 SP1에서 얼마 지나지 않아 나왔습니다. Microsoft는 SP1에 스크립트를 등록하는 새로운 메커니즘을 도입했으며 이전 메커니즘 대신 해당 메커니즘을 사용하도록 실제 유효성 검사기 클래스를 변경했습니다.

변경 사항에 대해 자세히 설명하겠습니다.

전통적으로 Page.RegisterStartupScript () 및 Page.RegisterClientScriptBlock ()과 같은 Page 메서드를 통해 스크립트를 등록해야했습니다. 문제는 이러한 메서드가 확장 성을 위해 설계되지 않았고 UpdatePanel이 이러한 호출을 모니터링 할 방법이 없다는 것입니다.

SP1에는 Page.ClientScripts라는 페이지에 새 속성 개체가 있습니다. 이 객체에는 원본과 동등하고 어떤면에서 더 나은 스크립트를 등록하는 메서드가 있습니다. 또한 UpdatePanel은 이러한 호출을 모니터링하여 적절한 경우 메서드를 다시 렌더링하거나 호출 할 수 있습니다. 이전 RegisterStartupScript () 등의 메서드는 더 이상 사용되지 않습니다. 여전히 작동하지만 UpdatePanel 내부에서는 작동하지 않습니다.

정치 외에는 설치를 .NET 2.0 SP1로 업데이트하지 않을 이유가 없습니다. 서비스 팩에는 중요한 수정 사항이 포함되어 있습니다.

행운을 빕니다.

다른 팁

<인용구>

@Jonathan Holland : Validators.dll을 사용하면 어떤 문제가 있습니까?

원래 클래스를 대체하기 때문에 Microsoft가 향후 (또는 이미 출시했을 수있는) 버그 및 보안 수정, 개선 사항 등을 조용히 우회하고 있습니다.web.config를주의 깊게 살펴 보지 않으면 패치를 건너 뛰고 있다는 사실을 결코 눈치 채지 못할 것입니다.

물론 각 상황을 평가해야합니다..NET 2.0 RTM을 사용하는 것이 절대적으로 멈춘다면 Validators.dll이없는 것보다 낫습니다.

@jmein

실제로 문제는 Validator 클라이언트 스크립트가 updatePanel 내부에 배치 될 때 작동하지 않는다는 것입니다 (UpdatePanels는 스크립트 노드가 아닌 텍스트 노드로 스크립트 노드를 추가하는 .innerHTML을 사용하여 새로 고침되므로 브라우저가 실행하지 않습니다).

수정은이 문제를 해결하기 위해 Microsoft에서 출시 한 패치입니다.Google의 도움으로 찾았습니다.

http : // 블로그.msdn.com / mattgi / archive / 2007 / 01 / 23 / asp-net-ajax-validators.aspx

어떤 이유로 든 ASP.NET 유효성 검사기 컨트롤의 업데이트 된 버전을 사용할 수없는 경우 실제로 유효성 검사 그룹의 유효성을 검사하는 것이 매우 쉬운 경우에는 전화 만하면됩니다. 라코 디스

그런 다음 PageRequestManager를 사용하여 필요에 따라 유효성 검사를 실행할 수 있습니다.

확실히 업데이트 된 유효성 검사 컨트롤을 사용하는 것이 좋은 방법이지만 저는 JavaScript에 상당히 부분적입니다.)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top