Проверка MVC3 с помощью ComponentModel.DataAnnotations для формата даты в Великобритании (также с использованием jquery ui datepicker)

Я вижу, что есть несколько похожих вопросов, но ни один из них не решает мою проблему.

Я работаю над приложением MVC3 с Entity Framework 4.3. У меня есть поле даты в Великобритании, которое я планирую разрешить пользователю редактировать с помощью средства выбора даты Jquery UI (, которое я заработал благодаря этому блогу ).

К счастью для меня, в этом блоге есть инструкции по созданию средства выбора даты с использованием британского формата, однако проверка EF по-прежнему говорит мне, что мне нужно ввести допустимый формат даты. Как ни странно, это не мешает мне отправлять дату в БД, это просто ненавязчивая проверка и отображение сообщения.

На данный момент у меня есть следующая аннотация данных :

[DataType(DataType.Date)]
public System.DateTime Module_Date { get; set; }

, но я также пытался добавить :

[DisplayFormat(DataFormatString="{0:dd/MM/yyyy}")]

, что не дало никакого эффекта. Я надеюсь, что у кого-то есть решение, потому что я не хочу отключать ненавязчивую проверку, чтобы остановить это сообщение об ошибке.

Спасибо

РЕДАКТИРОВАТЬ

После ответа @Iridio я рассмотрел возможность добавления привязки модели, и действительно, из нескольких сообщений, подобных этому, которые я прочитал, это казалось правильным, но то, что у меня есть придумать не имеет никакого эффекта. вот что я пробовал:

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;
    }
}

с этим в методе Application_Start()файла Global.asax.cs:

ModelBinders.Binders.Add(typeof(DateTime), new DateTimeBinder());
ModelBinders.Binders.Add(typeof(DateTime?), new DateTimeBinder());

6
задан Ben 17 April 2012 в 10:28
поделиться