2012-07-10 4 views
0

요약 : (로컬 자바 스크립트를 통해)를 사용할 때 다음 서버에 백을 기록, 때
장애인 ASP.NET 유효성 검사기는 원래 InnerHTML 때보다는 ErrorMessage을 보여 자신의 InnerHTML 내용을 잃어 가고있다 해고 됐어.장애인 검증

상세 정보 : 좀 복잡한 개별 제어가 많이 눈에 보이지 않는/표시하는 데 필요한 양식, 자신의 유효성 검사기를 다루는
다른 컨트롤의 선택에 따라 활성화/비활성화 할 수 있습니다.

모든 유효성 검사기에는 asp:ValidatorSummary 개체를 통해 표시된 오류 메시지와 함께 하나의 "별표"이미지가 포함되어 있습니다. 예를 들어

<asp:RequiredFieldValidator runat="server" ID="valName" 
    ControlToValidate="txtName" ErrorMessage="Enter a name"> 
    <img runat="server" src="~/images/error.gif" /> 
</asp:RequiredFieldValidator> 

보다는 하나 하나 검증에 asp:CustomValidator을 사용

(... (여기에서 볼 수 포맷, 는 일반적으로 더 공백 UPDATE, 이것은 아래의 업데이트를 참조하십시오 실제로 정확하지 않습니다이)있는 로컬 JavaScript 및 서버 측 처리기가 필요합니다), "valid"이벤트 핸들러의 일부로 일반 유효성 검사기에 .enabled = false을 설정하기 만하면됩니다. (컨트롤의 상태는 또한 초기 페이지로드에 서버 측뿐만 아니라 이후의 포스트 백 페이지가로드에 설정되어 있습니다.)

function showName(show){ 
    document.getElementById("txtName").style.display = (show ? "" : "none"); 
    document.getElementById("valName").enabled = show; 
} 

문제는 발리는 이벤트의 순서에 달려있다 비활성화되면 폼이 포스트 백됩니다. 그러면 컨트롤이 (사용자 인터럽트를 통해) 변경되고 유효성 검사기가 활성화됩니다. 이제 유효성 검사기가 실패한 경우 (포스트 백 시도시) <img 코드가 사라 졌으므로 대신 이미지가 있어야하는 위치에 ErrorMessage 텍스트가 표시됩니다.

InnerHTML은 유효성 검사기가 계속 활성화 된 상태로 유지됩니다.

다른 동적 (정말은하고 싶지 않아 하는) 매 페이지로드 각 검사기에 이미지를 추가하거나, 정말 원하지 않는 다시하는 (CustomValidator들로 모두 변환하는 것보다 해야 할 일), 아무도이 문제를 알지 못합니까? 이 버그는 알려진 버그입니까 (명백한 것은 찾을 수 없기 때문에)?

Visual Studio 2010에서 ASP.NET 2.0을 사용 중입니다. 불행히도 현재 ASP.NET의 상위 버전으로 업그레이드하는 위치에 있지 않습니다. 난 그냥 발견

UPDATE는 <img 태그가 실제로 &nbsp; 기관이 앞에 있다는 것입니다 ... 그리고 내가 발리에서 바로 <img 태그를 떠나는 것을 제거하면, 그것을 작동합니다.

유효성 검사기의 InnerHTML에 일반 텍스트 (즉, ASP 서버 측 컨트롤이 없음)가 포함되어있는 경우 효과가있는 것부터 재생할 때 InnerHTML은 유효성 검사기의 사용 가능 여부와 관계없이 모든 게시 후 다시 유지됩니다. 아닙니다. 또한 (공백 제외) 및 일반 텍스트로 InnerHTML시작은 어떤 서버 측 컨트롤이 경우 유효성 검사기가 비활성화 올바르게 때

그러나, 그것은 이후의 백업 지속되지 않습니다.

이 경우 왜 이해하지 않지만, 사소한 형식 문제에 대해 나는 확실히 ... 그 중 하나에 대응할 수, 또는 나는 문자 그대로 내부 &nbsp;, 또는 style<img 태그를 넣어해야합니다 ... 그 중 하나에 대한 다양한 옵션이 있습니다.

ASP.NET 4.0 테스트 베드 응용 프로그램을 사용하여 동일한 버전이 해당 버전에서 발생하는지 확인할 수 있습니다.

아무도 다른 사람이 며칠 안에 추가하고 싶지 않다면 위의 질문에 직접 답할 것입니다.

답변

0

업데이트 된 질문에 언급했듯이이 문제의 원인은 &nbsp;으로 시작하여 서버 측 컨트롤이 포함 된 유효성 검사기 InnerHTML 때문입니다.

내가 문제를 해결하려면

<asp:RequiredFieldValidator runat="server" ID="valName" ControlToValidate="txtName" 
    ErrorMessage="Enter a name">&nbsp;<img runat="server" src="~/images/error.gif" 
    /></asp:RequiredFieldValidator> 

...로했다 전에, 나는 단순히 드문 경우에, 다른 사람 도움이 될 것입니다 그 &nbsp; ...

<asp:RequiredFieldValidator runat="server" ID="valName" ControlToValidate="txtName" 
    ErrorMessage="Enter a name"><img runat="server" src="~/images/error.gif" 
    /></asp:RequiredFieldValidator> 

희망을 제거하는 그들은 상황 상황에 처한다.

언제나 누군가가 다른 답변/해결책을 제시하면 언제나 내 옵션을 다시 고려할 의향이 있습니다.