Ho un campo della data (sto usando il DatePicker jQuery UI) in una forma che è stato formattato, in questo modo:MVC3 discreto Data Validation su una data formattata personalizzato
ViewModel
[DisplayFormat(DataFormatString = "{0:dd-MMM-yyyy}", ApplyFormatInEditMode = true)]
public DateTime FooDate { get; set; }
View
@Html.EditorFor(m => m.FooDate)
Questo dimostra correttamente la data il modo in cui voglio io, ad esempio, 09-Nov-2011
Il problema che si verifica, si verifica quando si preme Invia. Continua a dirmi che la data non è valida .... È valida, stupida cosa!
C'è un modo, posso ottenere jQuery/discreto javascript per ignorare questo campo o consentire questo formato per passare? Finora, l'unico modo per far funzionare il modulo è se non formattare la data o utilizzare {0: d} come formato di data per esso.
Edit: Ho creato un layout di totalmente separata + vista + controller + modello per testare questa cosa stupida. Ancora non funziona in IE/Safari. Ho gli ultimi file jquery.validate/discreti da nuget.
Il mio layout
è vuoto. E 'appena carica i seguenti file:
"jquery-1.7.min.js"
"jquery-ui-1.8.16.min.js"
"jquery.validate.min.js"
"jquery.validate.unobtrusive.min.js"
mio TestViewModel è semplice:
public class TestViewModel
{
[Display(Name = "Test Date:")]
[DisplayFormat(DataFormatString = "{0:dd/MMM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime? TestDate { get; set; }
}
mio TestController va come segue:
public class TestController : Controller
{
public ActionResult Index()
{
var m = new TestViewModel();
m.TestDate = DateTime.Now;
return View(m);
}
}
mio punto di vista:
@using (Html.BeginForm())
{
ViewContext.FormContext.ValidationSummaryId = "valSumId";
@Html.ValidationSummary(false, "The following errors were found:");
@Html.AntiForgeryToken()
@Html.LabelFor(m => m.TestDate)
<input type="date" id="TestDate" value="@Model.TestDate.Value.ToString("dd/MMM/yyyy")" />
<input type="submit" />
}
No worky.
Sai qual è la cosa fastidiosa? Se cambio TestDate
in una stringa, non riesce ancora.
hai impostato lo stesso formato di data quando dichiari il datepicker? $ ('# data'). datepicker ({ constrainInput: true, dateFormat: 'D, dd Myy' ... qualcosa come questo – shennyL
Sì. Ho caricato una data predefinita dalla vista quando la pagina viene caricata e ancora non mi piace – jzm
Per il mio caso, ho formato Dint nel modello, lo faccio direttamente in vista usando string.format e la convalida è passata. Forse puoi provare :) – shennyL