mvc example bootstrap asp jquery asp.net-mvc datetime datepicker viewmodel

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)