2015-02-13 9 views
6

Voglio solo accettare la data nel formato ggMMaaa durante l'invio. Ma dà un errore comeConvalida MVC per accettare DateTime nel formato ggMMaaaio

Il campo Da data deve essere una data.

enter image description here

Ma, quando ho messo la data in MMGGAAAA accetta pkkttrfg roperly.
Il mio modello è

public class CompareModel 
{ 
    [Required] 
    [DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}", ApplyFormatInEditMode = true)] 
    public DateTime FromDate { get; set; } 

    [Required] 
    [DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}", ApplyFormatInEditMode = true)] 
    public DateTime TODate { get; set; } 

} 

My View Parte è

<div class="form-group"> 
     @Html.LabelFor(model => model.FromDate, new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.EditorFor(model => model.FromDate) 
      @Html.ValidationMessageFor(model => model.FromDate) 
     </div> 
    </div> 

    <div class="form-group"> 
     @Html.LabelFor(model => model.TODate, new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.EditorFor(model => model.TODate) 
      @Html.ValidationMessageFor(model => model.TODate) 
     </div> 
    </div> 


    <div class="form-group"> 
     <div class="col-md-offset-2 col-md-10"> 
      <input type="submit" value="Create" class="btn btn-default" /> 
     </div> 
    </div> 
+0

Potete guardare utilizzando jQuery globalizzare o aggiungere un metodo per la '$ .validator' come per [questa risposta ] (http://stackoverflow.com/questions/27285458/jquery-ui-datepicker-and-mvc-view-model-type-datetime/27286969#27286969) - nota che la soluzione è per il jquery ui datepicker ma potrebbe essere regolata per una casella di testo standard (ad esempio dividere il valore nei suoi componenti, costruire un nuovo oggetto 'Date()' javascript e testarne la validità) –

risposta

7

Il problema è dietro le quinte che utilizza javascript per convalidare questo ed è necessario sovrascrivere questo.

jQuery(function ($) { 
    $.validator.addMethod('date', 
    function (value, element) { 
     if (this.optional(element)) { 
      return true; 
     } 

     var ok = true; 
     try { 
      $.datepicker.parseDate('dd/mm/yy', value); 
     } 
     catch (err) { 
      ok = false; 
     } 
     return ok; 
    }); 
}); 

che è stata presa dal this answer

+0

Dove lo metto? Grazie. Trasmetterò una votazione una volta che lo avrò funzionato. – w0051977

5

Basta provare aggiungendo

<system.web> 
    <globalization culture="en-GB"/> 
</System.web> 

Il suo lavoro per me con lo stesso problema