Come posso comunicare al mio controller/modello quale tipo di cultura deve aspettarsi per l'analisi di un datetime?Problema di cultura datetime di ASP.NET MVC quando si restituisce il valore al controllore
stavo usando alcuni dei this post per implementare jQuery DatePicker nella mia applicazione MVC.
Quando invio la data in cui viene "perso nella traduzione" non sto utilizzando il formato USA per la data, quindi quando viene inviato al mio controller diventa semplicemente nullo.
Ho un form in cui l'utente sceglie una data:
@using (Html.BeginForm("List", "Meter", FormMethod.Get))
{
@Html.LabelFor(m => m.StartDate, "From:")
<div>@Html.EditorFor(m => m.StartDate)</div>
@Html.LabelFor(m => m.EndDate, "To:")
<div>@Html.EditorFor(m => m.EndDate)</div>
}
Ho fatto un modello di modifica per questo, per l'attuazione del DatePicker jQuery:
@model DateTime
@Html.TextBox("", Model.ToString("dd-MM-yyyy"), new { @class = "date" })
Ho quindi creare il DatePicker widget come questo.
$(document).ready(function() {
$('.date').datepicker({ dateFormat: "dd-mm-yy" });
});
Tutto questo funziona correttamente.
Qui è dove iniziano i problemi, questo è il mio controllo:
[HttpGet]
public ActionResult List(DateTime? startDate = null, DateTime? endDate = null)
{
//This is where startDate and endDate becomes null if the dates dont have the expected formatting.
}
Questo è il motivo per cui mi piacerebbe raccontare in qualche modo il mio controller ciò che la cultura si deve aspettare? Il mio modello è sbagliato? posso in qualche modo dirmi quale cultura usare, come con gli attributi di annotazione dei dati?
public class MeterViewModel {
[Required]
public DateTime StartDate { get; set; }
[Required]
public DateTime EndDate { get; set; }
}
Edit: this link spiega il mio problema e una soluzione molto buona ad esso pure. Grazie a gdoron
Utilizzare un formato per tutti richieste. http://stackoverflow.com/a/28219557/960997 – rnofenko
@fomaa Ora utilizzo datepicker con [altField] (http://api.jqueryui.com/datepicker/#option-altField) e [altFormat] (http://api.jqueryui.com/datepicker/#option-altFormat) opzioni per fornire un campo nascosto con una versione di invarianza della data della cultura (come ISO8601 come si menziona). Quindi, presentando quel campo, ritengo che questa sia una soluzione migliore. – FRoZeN