Проблема проверки атрибута модели
Я форматирую DateTime?
поле как dd/MM/yyyy
и когда я отправляю форму, это показывает ошибку проверки.
Я не могу понять, почему это происходит?
модель
[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>
2 ответа
Ничто не было полезно для меня, ребята....
Поэтому я добавил 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; }
Я думаю, что DataFormatString используется только для отображения, и он не использует ModelBinder для анализа. Таким образом, ваш сервер все еще использует Культуру из web.config.
Вы можете жестко задавать конкретную культуру в конфигурации, которая должна использоваться с этим форматом даты.
Вот ответ, который может вам помочь - /questions/39311295/polzovatelskij-svyazyivatel-modeli-datetime-v-aspnet-mvc/39311306#39311306 У него есть образец IModelBinder, который использует CurrentCulture для анализа. Вы можете указать собственный формат