example - jquery ui datepicker es js
jquery ui datepicker y mvc ver tipo de modelo datetime (3)
Aquí MVC Ver modelo:
public DateTime? date { get; set; }
Esto es para script:
$(''.DatePickers'').datetimepicker({
timepicker: false,
format: ''d-M-Y'',
scrollInput: false,
closeOnDateSelect: true
});
evento de pulsación de tecla para el selector de fecha de solo lectura
$(".DatePickers").keypress(function (event) { event.preventDefault(); });
Estoy usando jquery datepicker en mi modelo de vista
Aquí está mi punto de vista:
@Html.TextBoxFor(o => o.JobStartDate, new { id = "dt1", @class = "input-block-level" })
@Html.ValidationMessage("JobStartDate")
y mi guión:
$("#dt1").datepicker({ dateFormat: "dd/mm/yy" });
Todo funciona bien si mi fecha es <= 12, si mi fecha es superior a 12, me mostrará un mensaje de error de validación que dice "El campo Fecha de inicio debe ser una fecha". (Estoy usando la validación jquery)
Por ejemplo: la fecha 16/12/2014 me dará el error mientras que 12/12/2014 no
Aquí está mi modelo de vista:
[Required]
[DataType(DataType.Date)]
[Display(Name = "Start Date")]
public DateTime JobStartDate { get; set; }
Sospecho que mi modelo de vista anticipa una fecha en el formato mm / dd / aaaa mientras que en mi selector de fechas especifiqué dd / mm / aa, ¿hay alguna manera de decirle a mi modelo de vista que estoy esperando el formato dd / mm / aa así que no arroja un mensaje de error si la fecha es> = 12.
Deberá crear un validador personalizado. Necesita modificar su propiedad para tomar un valor de cadena en su lugar como este
public string JobStartDate {get; set; }
Luego deberá crear su validador personalizado de esta manera
public class CheckDateAttribute : ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext) {
// Validate your Date here
}
}
Después de esto, simplemente decorará su propiedad como tal:
[CheckDate]
public string JobStartDate {get; set;}
Aquí hay un buen tutorial sobre validadores personalizados
Puede ver el uso de jquery globalize o agregar lo siguiente a su script (suponiendo, por supuesto, que el formato de fecha de cultura del servidor sea ''dd / MM / aaa'')
$.validator.addMethod(''date'', function (value, element) {
if (this.optional(element)) {
return true;
}
var valid = true;
try {
$.datepicker.parseDate(''dd/mm/yy'', value);
}
catch (err) {
valid = false;
}
return valid;
});
$(''#dt1'').datepicker({ dateFormat: ''dd/mm/yy'' });
y utilice
@Html.ValidationMessageFor(m => m.JobStartDate)