Development Tip

ASP.NET 유효성 검사기로 날짜 유효성 검사

yourdevel 2020. 11. 16. 22:17
반응형

ASP.NET 유효성 검사기로 날짜 유효성 검사


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

범위 유효성 검사기를 사용하여 유효한 날짜를 확인하려면 어떻게해야합니까? 최소값 또는 최대 값으로 1000 년 1 월 1 일을 입력하면 값을 날짜 유형으로 변환 할 수 없다는 오류가 표시되지만 다른 형식을 사용하면 입력 한 텍스트가 유효하지 않은 것으로 간주됩니다.

아래는 내 코드입니다.

<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>

최선의 선택은

웹 양식에 비교 유효성 검사기를 추가합니다. controlToValidate를 설정합니다. Type 속성을 Date로 설정합니다. 연산자 속성을 DataTypeCheck로 설정합니다. 예 :

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

CustomValidator는 여기에서도 작동합니다.

<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>

I believe that the dates have to be specified in the current culture of the application. You might want to experiment with setting CultureInvariantValues to true and see if that solves your problem. Otherwise you may need to change the DateTimeFormat for the current culture (or the culture itself) to get what you want.

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

반응형