2014-01-15 4 views
0

Я форматирую DateTime? поле типа dd/MM/yyyy, и когда я отправляю форму, он показывает ошибку проверки.Проблема с проверкой атрибута модели

enter image description here

Я не могу получить его почему это происходит?

Модель

[Display(Name = "Expected Ending Time")] 
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")] 
public DateTime? ExpectedEndingTime { get; set; } 

HTML

@Html.TextBoxFor(x => x.Requsition.ExpectedEndingTime, new { @class = "form-control dataPickerField", id = "ExpectedEndingTimeDataPicker", @readonly = true }) 

@Html.ValidationMessageFor(x => x.Requsition.ExpectedEndingTime) 



<script> 
    $(function() {    
     $('#ExpectedEndingTimeDataPicker').datepicker({ 
      format: 'dd/mm/yyyy', 
      autoclose: true   
     }) 
     .on('changeDate', function (ev) { 
       // do things; 
    ); 
    }); 
</script> 
+0

если вы вводите значение MM/dd/yyyy, будет ли оно работать? Если да, то каким-то образом ваш формат не применяется –

+0

Можете ли вы изменить тип ExpectedEndingTime с DateTime на String и проверить, какое значение вы получаете от браузера? – Frank59

+0

Возможно, использование значения с нулевым значением вызывает эту проблему. –

ответ

0

ничего было полезно для меня, ребята ....

Так что я добавил 1 дополнительное поле к модели и будет держать DateTime как String в формате мне нужно.

И для мест мне нужен DateTime формат У меня есть другое поле.

[Display(Name = "Expected Ending Time")] 
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")] 
public DateTime? ExpectedEndingTime { get; set; } 


[Required] 
[Display(Name = "Expected Ending Time")] 
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")] 
public string ExpectedEndingTimeAsString { get; set; } 
1

Я думаю, что DataFormatString используется только для отображения, и он не использует по ModelBinder для синтаксического анализа. Таким образом, ваш сервер по-прежнему использует Culture from web.config.

Вы можете жестко указать конкретную культуру в конфигурации, которая должна использоваться с этим форматом даты.

Вот ответ, который может вам помочь - https://stackoverflow.com/a/8035636/169635 В нем есть образец IModelBinder, который использует CurrentCulture для синтаксического анализа. Вы можете указать свой собственный формат

+0

Спасибо за вход! Я провел несколько исследований, но, наконец, получил другое решение. –

Смежные вопросы