ho questa azione di controllo:C# MVC e DateTime controller azione modello
[HttpGet]
public ActionResult CreateForm(Models.ReminderModel model)
{
if (model.FkUserId == null && model.FkRoleId == null) {
model.FkUserId = UserSession.Current.UserId;
model.ReminderDate = DateTime.UtcNow;
}
return View(model);
}
L'azione si comporta normalmente se non viene specificato alcun parametro URL, ma quando ho specificare alcuni dati, tutto viene impostato MAReminderDate
. Ad esempio, la richiesta viene eseguita con
model[0][name]:FkUserId
model[0][value]:2
....
model[2][name]:ReminderDate
model[2][value]:2013-03-09T10:33:04.934Z
...
Nota: i parametri sono vista serializzato jQuery e sempre lavorato bene fino ad ora. È la prima volta che proviamo a passare un DateTime
all'azione di un controller.
Nel controller di azioni, model.FKUserId
verrà impostato correttamente, tuttavia ReminderDate
verrà impostato su "0001-01-01T00:00:00.000Z"
.
Cosa mi manca?
** Aggiornamento **
Come si è scoperto, C# non funziona con ISO data formattata stringhe di tempo. Preferisce quelli UTC. Qualcosa come 2013-03-05T16:23:00.000Z
deve essere inviato come u20130305212358000
(EST). Una rilegatura sarebbe stata sufficiente, ma penso che questa sia la soluzione migliore.
Potete passare nel codice? Model.ReminderDate il valore corretto prima di inviarlo alla vista? – TTT
no, l'azione del controller è invocata con 'model.ReminderDate =" 0001-01-01T00: 00: 00.000Z "' (sin dall'inizio) anche se il parametro URL è impostato in modo esplicito, proprio come tutti gli altri argomenti .. . che sono correttamente impostati nel modello. È come se il parametro URL sia semplicemente ignorato. –
La mia scommessa è un problema di formato datetime. Aiuta questo: http://stackoverflow.com/questions/6076961/pass-date-values-from-ajax-call-to-mvc – TTT