2012-10-29 5 views
1

현재 필드의 서버 쪽 유효성 검사에 대해 궁금합니다. 내가 비워 둘 수 없습니다 필드를 가지고 예를 들어필드에 대한 여러 유효성 확인

는 &이 될 것 검증 999999

예제 코드의 값 아래에 있어야합니다 숫자 여야합니다 :

If checkNumeric(txtBaseSalary.Text) = True Then 
      txtBaseSalary.CssClass = "text" 
     Else 
      x += 1 
      step_4 += 1 
      txtBaseSalary.CssClass = "text error" 
End If 

If val(txtBaseSalary.Text) = 0 or val(txtBaseSalary.Text) > 999999 Then 
      x += 1 
      step_4 += 1 
      txtBaseSalary.CssClass = "error text" 
     Else 
      txtBaseSalary.CssClass = "text" 
End If 

그러나 I를 첫 번째 유효성 검사에 실패했지만 두 번째 값을 전달하면 오류 금액 (step_4)이 올라갑니다. 그러나 두 번째를 통과하면 시각적 표현이 지워집니다.

중첩 된 if 문없이 필드에 대해 여러 유효성 검사를 수행하는 구현을 가진 사람이 있습니까?

또한 여러 인증이 필요한 상황에 적용 할 수있는 솔루션을 제공하십시오. 여기 게시 된 한 가지 상황을 확인할 수있는 방법이 아닙니다.

+0

왜 ASP.NET 유효성 검사 컨트롤을 사용하지 http://msdn.microsoft.com/en-us/library/을 aa479013.aspx – freebird

+1

'ValidateEmptyText = true'와 함께'CustomValidator'를 사용하십시오. 그러면'regex'를 사용하십시오. –

+0

처음 실패하면 두 번째 조건을 확인해야합니까? 그렇지 않은 경우 "else if"를 사용하여 첫 번째 실패 후에 중지합니다. (다른 사람이 out-of-the-box 유효성 검사를 사용하기 위해 만드는 몇 가지 좋은 참조가 있음을 유의하십시오.) –

답변

3

당신도

  • 은 조건이나
  • 빈 텍스트 특정의 수치를 확인하는 CompareValidator를 확인하는 RequiredFieldValidator를 사용을 확인 ValidateEmptyText=true 코드와 CustomValidator을 사용할 수 있습니다 범위.

<asp:CompareValidator runat="server" 
    id="cmpNumbers" 
    controltovalidate="txtBaseSalary" 
    valuetocompare="999999" 
    operator="LessThan" 
    type="Integer" 
    errormessage="The number should be smaller than 999999!" /><br /> 

당신은 오류에 CSS를 적용 할 아약스 ValidatorCalloutExtender를 사용할 수 있습니다. 또 다른 옵션은 JQuery입니다.

+0

그 소리가 마음에 들지만, 그것을 확장하고 직접 수표를 추가 할 수 있습니까? 예를 들어 해당 필드에 대해 4 가지 다른 검증을 할 수 있습니까? –

+0

아니면 다음과 같은 4 가지 ASP가 있습니다 : comparevaldiator가 통제하에 있습니까? –

+0

@RyanMcDonough : CustomValidator를 확장하여 임의로 지정할 수 있습니다. 가장 유연하지만 가장 정교한 검사기 유형입니다. 나는'RequiredFieldValidator' +'CustomValidator' 접근 방식으로 갈 것입니다. 검사기 당 하나의 오류 메시지를 제공 할 수 있습니다. 따라서 모든 검사마다 다른 유효성 검사기를 제공하는 것이 낫습니다. 그런 다음 다른 오류 메시지를 제공 할 수도 있습니다. 또한 각 유효성 검사기에 대해 유효성 검사기를 사용하거나 사용하지 않도록 설정하거나 [확인 그룹] (http://msdn.microsoft.com/en-us/library/ms227424(v=vs.100) .aspx)을 쉽게 설정할 수 있습니다. –

1

더 나은 숫자 텍스트 상자 컨트롤을 만들 수 있습니다. checkNumeric 검사를 피할 것입니다.

+0

댓글이 있어야합니다. – freebird

1

단일 정규식이 표현에 비교

^([0-9]{1,6})$ 

숫자로 강제하고 당신이 증가 할 것으로 보인다 이후 당신은 (당신이 쓴 방법을 사용할 수 있습니다

0과 999999 'X'및 '_4')

using System.Text.RegularExpressions; 
Regex r = new Regex("^([0-9]{1,6})$"); 
Match m = r.Match(text); 
if (m.Success)... 

MSDN Documentation

또는 당신은 아웃 - 오브 - 박스 검증 사용할 수 있습니다

<asp:RegularExpressionValidator 
    ID="regexpName" runat="server"  
    ErrorMessage="error text." 
    ControlToValidate="txtName"  
    ValidationExpression="^([0-9]{1,6})$" /> 

More MSDN Documentation

+0

회신을 환호하지만, 내가 말했듯이 나는 어떤 상황에 적용하기에 충분할 정도로 일반적인 답변을 원했지만이 인스턴스가 아닌 여러 인증을하고 싶습니다. 그것이 정규 표현식 인 것처럼 보이지만 한 번에 여러 개의 체크를하는 것입니다. –

관련 문제