Я использую атрибут DataType.Date в моей модели и EditorFor, на мой взгляд. Это отлично работает в Internet Explorer 8 и Internet Explorer 9 , но в Google Chrome он отображает средство выбора даты и вместо отображения значения просто отображает «Месяц / День / Год» серым цветом.
Почему Google Chrome не отображает значение?
Модель:
[DataType(DataType.Date)]
public Nullable<System.DateTime> EstPurchaseDate { get; set; }
Посмотреть:
<td class="fieldLabel">Est. Pur. Date</td>
<td class="field">@Html.EditorFor(m=>m.EstPurchaseDate)</td>
источник
[DataType(DataType.Date)]
чтобы мне не пришлось отмечать все эти свойства отдельно с риском пропустить некоторые из них?В MVC5.2 добавьте Date.cshtml в папку ~ / Views / Shared / EditorTemplates:
источник
Как дополнение к ответу Дарина Димитрова:
Если вы хотите, чтобы эта конкретная строка использовала определенный (отличный от стандартного) формат, вы можете использовать в MVC5:
источник
@
в начале, что@Value = @Model.Property...
еще нужно@
? Вы имеете в виду простоnew { Value = Model.Property...
?В MVC 3 мне пришлось добавить:
среди пользователей при добавлении свойств:
Особенно, если вы добавляете эти свойства в файл .edmx, как я. Я обнаружил, что по умолчанию в файлах .edmx этого нет, поэтому добавления только свойств недостаточно.
источник
Если вы удалите
[DataType(DataType.Date)]
из своей модели, поле ввода в Chrome будет отображаться какtype="datetime"
и не будет отображать средство выбора даты.источник
date
. Использованиеdatetime
в качестве обходного пути неуместно, так как не семантически представляет данные.У меня все еще была проблема с передачей формата yyyy-MM-dd, но я справился с этим, изменив Date.cshtml:
источник
string.Format("{0}/{1}/{2}")
получитьdd/mm/yyyy
формат, и он работает нормально, я использовал метод базы данных первым, но DisplayFormat не работал с частичным классом, не знаю почему? В любом случае, если кто-то попробовал этот метод, я не стал не пытайтесь, но если кому-то нужно, надеюсь, это поможетОтветить на MVC4 DataType.Date EditorFor не будет отображать значение даты в Chrome, хорошо в IE
В модели необходимо иметь следующий тип объявления:
ИЛИ
Вам не нужно использовать следующий атрибут:
В Date.cshtml используйте этот шаблон:
Радоваться, веселиться! С уважением, Блертон
источник
DisplayFormat
атрибут 2) Измените тест, чтобы проверить, является ли тип браузера chrome, затем сделайте@Html.EditorFor(m=>m.EstPurchaseDate)
3) Иначе сделайте@Html.TextBox("EstPurchaseDate", dt.ToString("MM/dd/yyyy"))
Примечание: на # 2 лучше проверить, если браузер понимает HTML5, но я не знаю, как это сделать.Если вам нужен контроль над форматом даты (другими словами, не только формат гггг-мм-дд), то другим решением может быть добавление вспомогательного свойства типа string и добавление валидатора даты к этому свойству. и привязать к этому свойству на пользовательском интерфейсе.
А вот валидатор даты:
источник