Tôi có controller action này:C# MVC và DateTime trong hành động mô hình điều khiển
[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);
}
Hành động cư xử bình thường nếu không có param URL được chỉ định, nhưng khi tôi chỉ định một số dữ liệu, tất cả mọi thứ được thiết lập NHƯNGReminderDate
. Ví dụ, yêu cầu được thực hiện với
model[0][name]:FkUserId
model[0][value]:2
....
model[2][name]:ReminderDate
model[2][value]:2013-03-09T10:33:04.934Z
...
Note: params là serialized xem jQuery và luôn luôn làm việc tốt cho đến bây giờ. Đây là lần đầu tiên chúng tôi cố gắng vượt qua một số DateTime
quay lại thao tác điều khiển.
Trong bộ điều khiển hành động, model.FKUserId
sẽ được đặt chính xác, tuy nhiên ReminderDate
sẽ được đặt thành "0001-01-01T00:00:00.000Z"
.
Tôi đang thiếu gì?
** Cập nhật **
Khi nó bật ra, C# sẽ không làm việc với chuỗi thời gian ngày định dạng ISO. Nó thích những người UTC. Một cái gì đó như 2013-03-05T16:23:00.000Z
cần phải được gửi dưới dạng u20130305212358000
(EST). Một ràng buộc cũng đã đủ, nhưng tôi nghĩ đây là giải pháp tốt nhất.
Bạn có thể bước vào mã? Là model.ReminderDate giá trị chính xác trước khi bạn gửi lại cho View? – TTT
không, hành động điều khiển được gọi với 'model.ReminderDate =" 0001-01-01T00: 00: 00.000Z "' (ngay từ đầu) ngay cả khi thông số URL được đặt rõ ràng, giống như tất cả các đối số khác .. được đặt chính xác vào mô hình. Nó giống như nếu tham số URL chỉ bị bỏ qua. –
Đặt cược của tôi là một vấn đề định dạng datetime. Điều này có giúp được không: http://stackoverflow.com/questions/6076961/pass-date-values-from-ajax-call-to-mvc – TTT