문제

ASPX 파일에 배치 된 다음 .NET 3.5 코드는 페이지를로드 할 때 (JavaScript가 활성화 된 사용자의 경우) :

<noscript>
    <asp:TextBox ID="txt" runat="server"></asp:TextBox>
    <asp:RequiredFieldValidator ID="txt_RequiredFieldValidator" runat="server" 
      ControlToValidate="txt"></asp:RequiredFieldValidator>
    <asp:Button ID="btn" runat="server" Text="Button" />
</noscript>

ASP.NET Validator Control에서 생성 된 JavaScript에는 아래 두 번째 코드 라인 전에 NULL Check On이 포함되어 있지 않기 때문에 오류가 발생합니다.

var ctl00_body_txt_RequiredFieldValidator =
  document.all ?
    document.all["ctl00_body_txt_RequiredFieldValidator"] :
    document.getElementById("ctl00_body_txt_RequiredFieldValidator");

ctl00_body_txt_RequiredFieldValidator.controltovalidate = "ctl00_body_txt";

누구든지 이것에 대한 해결 방법을 제안 할 수 있습니까?


각주: 내가 왜 이것을하고 있습니까? JavaScript가 아닌 사용자의 경우 일부 AJAX 기능을 다른 UI 구성 요소로 대체하여 유효성 검사가 필요합니다.

도움이 되었습니까?

해결책

필수 필드 바리 디터에 다음을 추가해야합니다.

enableclientscript="false"

당신이 이것들을 사용하고있는 동안u003Cnoscript> 태그, 컨트롤의 클라이언트 측면 vaildation을 제공하는 데 아무런 의미가 없습니다. JS가 꺼져있는 경우에만 표시됩니다.

이렇게하면 서버 측에서 검증이 (자동으로) 발생하게됩니다.

전화를 받으십시오 "Page.isvalid"응답을 처리하기 전에.

보다 BaseValidator.enableclientscript 자세한 사항은.

다른 팁

JavaScript는 noscript에 포함 된 요소를 찾고 있습니까? AFAIK 서버 측에서 스크립트 지원을 감지하는 깨끗한 방법은 없습니다.

노스 스크립트 사용자를 "페이지의 Please Turnscript"또는 "Please Turnscript"로 푸시하려면 리디렉션을 만들어야한다고 생각합니다. 약간의 휠 재창조가 필요할 수있는 검증/제어 결합을 풀기 위해 약간의 수술을하십시오. 이것은 ASP.NET의 컨트롤러와 뷰 사이의 단단한 결합이 실제로 처벌하는 영역 중 하나입니다.

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