. NET Core MVC - Привязка DateTime всегда приводит к MinValue - PullRequest
1 голос
/ 29 мая 2020

У меня есть свойство BirthDate в моей модели, которое выглядит так:

[Required]
    [DataType(DataType.DateTime)]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = @"{0:MM/dd/yyy}")]
    public DateTime BirthDate { get; set; }

На мой взгляд, я привязываю это свойство к input с помощью помощника тега asp-for. Это выглядит так:

<input class="form-control" type="date" name="dateofbirth" id="inputDateOfBirth" placeholder="mm/dd/yyyy" data-date-format="mm/dd/yyyy"
               max="@DateTime.Today.ToString("yyyy-MM-dd")" asp-for="FamilyMember.BirthDate" required/>

При отправке формы в контроллер свойство BirthDate всегда устанавливается в 01/01/0001. Что я делаю не так?

1 Ответ

2 голосов
/ 30 мая 2020

Ваш элемент html использует помощник тега asp-for, но вы также указываете name="dateofbirth" и id="inputDateOfBith". Если удалить это, будет опубликовано правильное значение.

Asp-for при визуализации уже заполнит элемент input указанным свойством id и name, привязанным к модели (среди прочего, например, значение, проверка, et c.). Вы можете прочитать об этом и многом другом в официальной документации Microsoft ASP. NET Core tag helper.

Прямо из их документации:

Создает Атрибуты id и name HTML для имени выражения, указанного в атрибуте asp -for. asp -for = "Property1.Property2" эквивалентно m => m.Property1.Property2. Имя выражения - это то, что используется для значения атрибута asp -for. Дополнительную информацию см. В разделе «Имена выражений».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...