ваша форма отправляет значения из скрытых полей, которые отображаются на странице при первой загрузке представления, а затем никогда не изменяются (именно поэтому вы видите инициализацию по умолчанию для Day
и Field
),Ваши редактируемые поля находятся вне формы и являются тем, что вы редактируете, но они никогда не отправляются на сервер.Я думаю, что основной вывод здесь для вас заключается в том, что формы знают только о входных данных, которые существуют внутри них (если вы не пишете магию javascript, чтобы справиться с этим, но в этом случае нет причин делать это)
Вам нужночтобы удалить скрытые поля и поместить ваши редактируемые поля внутри формы следующим образом:
@model Card
<h1>Cards</h1>
<form method="post" asp-action="Refresh">
<div class="text-center">
<label asp-for="Day" class="control-label"></label>
<input asp-for="Day" class="form-control" />
</div>
<div class="text-center">
<label asp-for="Field" class="control-label"></label>
<select asp-for="Field" class="form-control" asp-items="ViewBag.Fields"></select>
</div>
<input type="submit" value="Refresh" class="btn btn-default" />
</form>
, вы также можете изменить действие вашего контроллера на:
[HttpPost]
public async Task<IActionResult> Refresh(Card card)
{
return RedirectToAction("Index", card.Day);
}