Я использую ASP.NET Core 2.2.
Я пытаюсь передать идентификатор (Guid) из моего представления в свой индекс контроллера, используя кнопку отправки, украшенную помощниками тегов asp, как показано ниже:
<input type="submit" value="Go" asp-controller="MyController" asp-action="Index" asp-route-id="@Model.Id" />
Мой метод действия контроллера выглядит так:
public IActionResult Index(Guid id)
{
return View();
}
Идентификатор всегда передается как Guid.Empty при нажатии кнопки отправки.
Я перешел на использование тега привязки с теми же вспомогательными значениями тега, и идентификатор заполнен правильно:
<a asp-controller="MyController" asp-action="Index" asp-route-id="@Model.Id">Go</a>
Я могу обойти это, создав стиль привязки, чтобы она выглядела как кнопка, но для понимания, может ли кто-нибудь объяснить, почему привязка будет работать в этой ситуации, а кнопка отправки - нет?
ОБНОВЛЕНО (сгенерированный HTML)
HTML с отправкой
<form>
<div class="d-flex">
<input type="submit" value="Go" formaction="" />
</div>
</form>
HTML с привязкой
<form>
<div class="d-flex">
<a href="/MyController?Id=2590bc68-6784-4174-90f5-e7ceb1b4d0e9">Go</a>
</div>
</form>