source

ASP.NET 유효성 검사기를 사용한 날짜 유효성 검사

nicesource 2023. 7. 18. 21:48
반응형

ASP.NET 유효성 검사기를 사용한 날짜 유효성 검사

ASP.NET을 사용하려고 합니다.RangeValidator텍스트 상자의 날짜를 확인합니다.텍스트 상자에 입력한 날짜 형식은 다음과 같습니다.dd MMMM yyyy.

유효한 날짜를 확인하기 위해 범위 검증기를 사용하는 방법은 무엇입니까?최소값으로 1월 1일 1000을 입력하면 값을 형식 날짜로 변환할 수 없다는 오류가 발생하지만 다른 형식을 사용하면 입력한 텍스트가 잘못된 것으로 선택됩니다.

내 코드는 다음과 같습니다.

<asp:TextBox 
    runat="server" 
    ID="txtDatecompleted" 
/>
<cc2:CalendarExtender
    ID="datecompletedExtender" 
    runat="server"
    TargetControlID="txtDatecompleted"
    Format="dd MMMM yyyy"
/>  
<asp:RangeValidator 
    runat="server" 
    ID="RangeValidator1" 
    Type="Date" 
    ControlToValidate="txtDatecompleted" 
    MaximumValue="9999/12/28" 
    MinimumValue="1000/12/28" 
    ErrorMessage="enter valid date" 
    Display="None"
/>
<cc2:ValidatorCalloutExtender 
    ID="RangeValidator1_ValidatorCalloutExtender" 
    runat="server"
    Enabled="True"
    TargetControlID="RangeValidator1">
</cc2:ValidatorCalloutExtender>

최선의 선택은 다음과 같습니다.

웹 양식에 비교 검증자를 추가합니다.컨트롤을 검증으로 설정합니다.유형 속성을 날짜로 설정합니다.연산자 속성을 DataTypeCheck(예:

<asp:CompareValidator
    id="dateValidator" runat="server" 
    Type="Date"
    Operator="DataTypeCheck"
    ControlToValidate="txtDatecompleted" 
    ErrorMessage="Please enter a valid date.">
</asp:CompareValidator>

Custom Validator는 여기서도 작동합니다.

<asp:CustomValidator runat="server"
    ID="valDateRange" 
    ControlToValidate="txtDatecompleted"
    onservervalidate="valDateRange_ServerValidate" 
    ErrorMessage="enter valid date" />

코드백:

protected void valDateRange_ServerValidate(object source, ServerValidateEventArgs args)
{
    DateTime minDate = DateTime.Parse("1000/12/28");
    DateTime maxDate = DateTime.Parse("9999/12/28");
    DateTime dt;

    args.IsValid = (DateTime.TryParse(args.Value, out dt) 
                    && dt <= maxDate 
                    && dt >= minDate);
}

저는 다음과 같이 하는 것이 가장 쉬운 방법이라고 생각합니다.

<asp:TextBox ID="DateControl" runat="server" Visible="False"></asp:TextBox>
<asp:RangeValidator ID ="rvDate" runat ="server" ControlToValidate="DateControl" ErrorMessage="Invalid Date" Type="Date" MinimumValue="01/01/1900" MaximumValue="01/01/2100" Display="Dynamic"></asp:RangeValidator>

저는 현재 신청 문화에서 날짜가 명시되어야 한다고 생각합니다.문화 설정을 시도해 보는 것이 좋을 것입니다.불변값 참을 선택하고 문제가 해결되는지 확인합니다.그렇지 않으면 현재 문화(또는 문화 자체)에 대한 날짜 시간 형식을 변경하여 원하는 내용을 얻을 수 있습니다.

언급URL : https://stackoverflow.com/questions/939802/date-validation-with-asp-net-validator

반응형