Связыватель модели C # MVC по умолчанию не будет привязываться к DateTime, а будет привязан к строке - PullRequest
0 голосов
/ 27 декабря 2018

Я явно упускаю что-то очевидное здесь.Как следует из названия, если у меня есть эта подпись:

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 на моих струнах, тогда я получу то, что мне нужно.Создание моего собственного связующего для модели кажется излишним - я не совсем уверен, в чем здесь проблема.Так что, хотя вопросы похожи, ответы на ссылку «дубликаты» не отвечают на все мои вопросы.

...