Tôi thấy có một số câu hỏi tương tự về vấn đề này, nhưng không giải quyết được vấn đề của tôi.Xác thực MVC3 với ComponentModel.DataAnnotations cho định dạng ngày Vương quốc Anh (cũng sử dụng jquery ui datepicker)
Tôi đang làm việc trên ứng dụng MVC3 với Entity Framework 4.3. Tôi có một trường ngày ở Vương quốc Anh mà tôi dự định cho phép người dùng chỉnh sửa bằng cách sử dụng trình đếm date UI Jquery (mà tôi đã làm việc nhờ có this blog).
May mắn thay cho tôi blog này bao gồm các hướng dẫn về cách đặt datepicker theo định dạng UK, tuy nhiên, việc xác thực EF vẫn cho tôi biết rằng tôi cần nhập định dạng ngày hợp lệ. Wierdly nó không ngăn cản tôi gửi ngày đến DB của nó chỉ là xác nhận không phô trương đá vào và hiển thị thông báo.
Tại thời điểm tôi có chú thích dữ liệu sau:
[DataType(DataType.Date)]
public System.DateTime Module_Date { get; set; }
nhưng tôi cũng đã cố gắng nói thêm:
[DisplayFormat(DataFormatString="{0:dd/MM/yyyy}")]
mà không ảnh hưởng gì cả. Tôi hy vọng một số có một giải pháp bởi vì tôi không ưa thích tắt xác nhận không phô trương để ngăn chặn thông báo lỗi này.
Cảm ơn
EDIT
sau câu trả lời @Iridio, tôi nhìn vào thêm một mô hình Ràng buộc, và thực sự từ vài bài viết như thế này mà tôi đọc nó dường như là điều phải làm , nhưng những gì tôi đã đưa ra không có hiệu lực. đây là những gì tôi đã cố gắng:
public class DateTimeBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
var date = value.ConvertTo(typeof(DateTime), CultureInfo.CurrentCulture);
return date;
}
}
với điều này trong phương pháp Application_Start()
của tập tin Global.asax.cs
:
ModelBinders.Binders.Add(typeof(DateTime), new DateTimeBinder());
ModelBinders.Binders.Add(typeof(DateTime?), new DateTimeBinder());
Tôi tin rằng bạn đề cập đến System.ComponentModel.DataAnnotations thay vì chú thích dữ liệu EntityFramework? Nếu bạn theo dõi blog thông qua thì bạn có chỉ định định dạng dữ liệu '{dateFormat:" dd/mm/yy "}' trong tập lệnh phía máy khách của bạn không? Nếu vậy, bạn đang sử dụng phiên bản script jquery ui nào? – Dangerous
oooh bạn khá chính xác tôi đang sử dụng các ComponentModel. Tôi đã quen với việc sử dụng EF trong dự án cuối cùng. sẽ nâng cấp. Tôi đã sử dụng jquery ui 1.8.7 nhưng tôi đã cập nhật lên phiên bản mới nhất theo câu trả lời của bạn bên dưới để không có kết quả như sau: – Ben
oh và yes tôi đã chỉ định '{dateFormat:" dd/mm/yyyy "}' – Ben