2009-04-26 4 views
11

다음 정규식은 웹 양식의 RegularExpressionValidator에 ValidationExpression 속성으로 설정되어 있습니다. 유효성이 검사 된 컨트롤에 잘못된 문자를 입력하면 유효성 검사기가이를 감지하고 오류 메시지를 표시합니다.RegularExpressionValidator가 빈 문자열을 검색하지 않습니다.

<appSettings> 
    <add key="categoryPattern" value="^[a-zA-Z0-9_+\-() ]{1,50}$" /> 
</appSettings> 

내 검사기 :

<asp:RegularExpressionValidator ValidationExpression="<%$ AppSettings:categoryPattern %>" 

내 서버 측 유효성 검사 :

Regex rex = new Regex(ConfigurationManager.AppSettings["categoryPattern"]); 
if (!rex.Match(categoryName).Success) 
{ 
    throw new ArgumentException("CategoryName must match expression: " + rex); 

당신이 볼 수 있듯이, 정확히 같은 패턴은 클라이언트 측과 서버 측에 적용됩니다.

그러나 유효성이 검사 된 컨트롤을 지우고 빈 문자열을 제출하면 유효성 검사기는 문제가 없다고 생각하고 서버 측 유효성 검사에서 오류가 발생합니다. 누가 RegularExpressionValidator의 깨진 계약을 제외하고 무엇이 잘못되었는지 알고 있습니까?

답변

17

의도적으로 설계된 것입니다. 사용자 입력을 강제 실행하려면 RequiredFieldValidator을 추가해야합니다. RegularExpressionValidator은 빈 필드를 유효한 것으로 간주하며 Regex을 통해 실행하지 않습니다. 예를 들어, 선택 항목 인 Email address 2 필드가 필요하지 않은 양식에있을 수 있지만 입력 한 경우 유효한 이메일 주소 여야합니다. 이 작업을 쉽게 수행하기 위해 다른 유효성 검사기는 빈 필드를 무시하고 필요한 경우 추가 RequiredFieldValidator을 추가하기 만하면됩니다.

실제로 서버에서 유효성을 다시 검사 할 필요는 없습니다. ASP.NET 유효성 검사기는 서버 측 유효성 검사를 지원합니다. Page.IsValid 속성을 확인할 수 있습니다.

+0

고마워요. @Mehrdad, RequiredFieldValidator를 추가했는데 서버 유효성 검사가 페이지에 없으며 페이지에서 사용되는 클래스와 잠재적으로 다른 코드에서 유지됩니다. – ProfK

+0

당신을 진심으로 환영합니다. –

관련 문제