Я явно упускаю что-то очевидное здесь.Как следует из названия, если у меня есть эта подпись:
public async Task<IActionResult> Details(int? id, DateTime? dateFrom, DateTime? dateTo)
, я всегда получаю null
для dateFrom
и dateTo
.Если я использую эту подпись:
public async Task<IActionResult> Details(int? id, string dateFrom, string dateTo)
, я получаю даты в виде строки: «27/11/2018 00:00:00» и «27/12/2018 23:59:59»
Я также попробовал ненулевой DateTime
, но он тоже не работает.
На переднем крае у меня есть это (кстати, оно корректно заполняется из модели):
<div>
<p>Filter</p>
@Html.EditorFor(model => model.DateFrom, new { @class = "form-control" })
@Html.EditorFor(model => model.DateTo, new { @class = "form-control" })
<a asp-action="Details" asp-route-id="@Model.Id" asp-route-dateFrom="@Model.DateFrom" asp-route-dateTo="@Model.DateTo">Filter</a>
</div>
Почему связыватель модели по умолчанию не привязывается к DateTime
или DateTime?
?
Кроме того, если я проверяю Query
в ближайшем окне, у меня есть:
Request.Query["dateFrom"]
{27/11/2018 00:00:00}
Count: 1
Results View: Expanding the Results View will enumerate the IEnumerable
Request.Query["dateTo"]
{27/12/2018 23:59:59}
Count: 1
Results View: Expanding the Results View will enumerate the IEnumerable
Редактировать после пометки как дубликата: я не уверен, что «дубликат» действительно объясняет, в чем проблема - может ли связыватель модели по умолчанию не связывать даты?- Если я DateTime.TryParse
на моих струнах, тогда я получу то, что мне нужно.Создание моего собственного связующего для модели кажется излишним - я не совсем уверен, в чем здесь проблема.Так что, хотя вопросы похожи, ответы на ссылку «дубликаты» не отвечают на все мои вопросы.