Форма MVV отправить поле даты и времени, не распознавая формат - PullRequest
0 голосов
/ 23 октября 2018

У меня есть поле ввода, которое принимает формат дд / мм / гггг чч: мм, например, 31/12/2018 21:05, но когда оно передается в действие post, оно не привязывается к классу datetime.

<input name="startDate" type="text" class="form-control m-input" readonly="" value="31/12/2018 21:05">

И мой атрибут viewmodel выглядит так:

public DateTime StartDate {get;set;}

, если я изменяю вышеуказанный тип на строку, он работает нормально .... или если я передаю входные данные в гггг-мм-дд ЧЧ:мм формат, он связывается с типом DateTime в порядке.Я попытался поместить ниже аннотации, но все еще не повезло.

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

Я не использую вспомогательный класс, это просто поле ввода в html.Я мог бы взять это как строковое поле и преобразовать в datetime, но задавался вопросом, есть ли какой-нибудь более легкий способ.

Любая помощь будет оценена.

Ответы [ 3 ]

0 голосов
/ 23 октября 2018

Кажется, что проблема в формате часа, который "чч", но входное значение равно "21:05".

Эта строка отлично работает:

var date = DateTime.ParseExact("31/12/2018 21:05", "dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture);   

Но даетта же ошибка, если формат "дд / мм / гггг чч: мм"

Изменить

Вы обновили тему, и я, насколько я понимаю, у вас естьНесколько вариантов, чтобы выбрать здесь.Один из них - получить значение в виде строки и проанализировать его или просто создать клиентский ModelBinder. Вот один из примеров: https://www.codeproject.com/Tips/1078167/DateTime-Issue-In-MVC

Удачи!

0 голосов
/ 23 октября 2018

Это, вероятно, из-за ваших текущих настроек культуры (если вы измените значение текстового поля StartDate на 2018-12-31 21:05, оно должно работать).Добавьте en-GB (например) культуру в ваш Web.config:

<system.web>
    <globalization uiCulture="en" culture="en-GB"/>
</system.web> 
0 голосов
/ 23 октября 2018

Простого пути не существует.

Ваш элемент управления вводом содержит текстовое представление даты и времени.Для свойства модели требуется объект DateTime.Вы должны преобразовать одно в другое.

...