validator validationmessagefor unobtrusivevalidationmode scriptresourcemapping requiere para net mvc ejemplo asp asp.net validation

asp.net - validationmessagefor - validation summary asp net



ValidaciĆ³n de fecha con el validador de ASP.NET (4)

Creo que la siguiente es la forma más fácil de hacerlo.

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

Estoy tratando de usar un ASP.NET RangeValidator para validar una fecha en un cuadro de texto. El formato de la fecha ingresada en el cuadro de texto es dd MMMM yyyy .

¿Cómo puedo usar el validador de rango para validar una fecha válida? Si ingreso el 1 de enero de 1000 como el valor mínimo o máximo, aparece un error que indica que el valor no se puede convertir a tipo fecha, pero si utilizo otro formato, el texto ingresado no es válido.

A continuación está mi código:

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


Creo que las fechas deben especificarse en la cultura actual de la aplicación. Es posible que desee experimentar con la configuración de CultureInvariantValues en true y ver si eso resuelve su problema. De lo contrario, es posible que deba cambiar DateTimeFormat para la cultura actual (o la culture sí) para obtener lo que desea.


La mejor opción sería

Agregue un validador de comparación al formulario web. Establezca su control para validar. Establezca su propiedad Type en Date. Establezca su propiedad de operador en DataTypeCheck, por ejemplo:

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


Un CustomValidator también funcionaría aquí:

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

Código detrás:

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); }