mam to działanie kontrolera:C# MVC i DateTime w kontroler działania modelu
[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);
}
Akcja zachowuje się normalnie, jeśli nie URL param jest określony, ale kiedy podać jakieś dane, wszystko zostanie ustawione BUTReminderDate
. Na przykład, żądanie jest wykonywane z
model[0][name]:FkUserId
model[0][value]:2
....
model[2][name]:ReminderDate
model[2][value]:2013-03-09T10:33:04.934Z
...
Uwaga: params są szeregowane widok jQuery i zawsze działało dobrze aż do teraz. Po raz pierwszy próbujemy przekazać DateTime
z powrotem do akcji kontrolera.
W kontrolerze akcji, model.FKUserId
zostanie poprawnie ustawiony, jednak ReminderDate
zostanie ustawiony na "0001-01-01T00:00:00.000Z"
.
Czego mi brakuje?
** Aktualizacja **
Jak się okazało, C# nie będzie działać z ISO sformatowana data ciągów czasowych. Preferuje UTC. Coś takiego jak 2013-03-05T16:23:00.000Z
musi zostać wysłane jako u20130305212358000
(EST). Wiązanie również byłoby wystarczające, ale uważam, że jest to najlepsze rozwiązanie.
można krok do kodu? Czy model.ReminderDate ma poprawną wartość przed odesłaniem go do widoku? – TTT
Nie, akcja kontrolera wywoływana jest przez 'model.ReminderDate =" 0001-01-01T00: 00: 00.000Z "' (od samego początku), nawet jeśli parametr URL jest jawnie ustawiony, podobnie jak wszystkie inne argumenty. ., które są poprawnie ustawione w modelu. To tak, jakby parametr adresu URL był po prostu ignorowany. –
Mój zakład dotyczy formatu daty i godziny. Czy to pomoże: http://stackoverflow.com/questions/6076961/pass-date-values-od-ajax-call-to-mvc – TTT