ASP.NET MVC3 Razor Entity Framework - свойство DataFormatString не работает - PullRequest
1 голос
/ 08 сентября 2011

Когда я пытаюсь создать или сохранить дату в модели, проверка выбрасывает неверный формат даты вместо того, чтобы уважать мой формат, указанный в DataFormatString (дд / мм / гггг).Я видел, что фреймворк пытается сохранить дату только в формате MM / dd / yyyy.Я хочу ввести / вывести его в дд / мм / гггг.

У меня есть следующая модель:

public class MyModel {

        public int MyModelID { get; set; }

        [DataType(DataType.EmailAddress)]
        public string Email { get; set; }

        [DataType(DataType.Date)]
        [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
        public DateTime BornDate { get; set; }
}

У меня есть шаблон редактирования для отображения отредактированных данных:

@model DateTime?
@Html.TextBox("", Model.HasValue ? Model.Value.ToString("dd/MM/yyyy") : DateTime.Today.ToString("dd/MM/yyyy"), new { @class = "date" })

У меня есть средство выбора даты jquery, зарегистрированное со следующим кодом:

$(document).ready(function () {
    $('.date').datepicker({
        changeMonth: true,
        changeYear: true,
        dateFormat: "dd/mm/yy"
    });
});

У меня есть следующее представление:

<div class="editor-field">
      @Html.EditorFor(model => model.DataNascimento)
      @Html.ValidationMessageFor(model => model.DataNascimento)
</div>

Я проверил учебник ContosoUniversity, и это происходит.

Спасибо за помощь.

1 Ответ

0 голосов
/ 08 сентября 2011

Один из лучших вариантов решения этой проблемы - написать свою собственную ModelBinder для обработки локализации, подробнее об этом здесь

Атрибут DisplayFormatуказывает только способ отображения поля BornDate (и форматирования при отображении), например, при использовании @Html.EditorFor.

...