使用标签助手无法处理提交的视图将参数传递给控制器

Passing parameter to Controller from view with tag helpers not working on a submit

我正在使用 ASP.NET Core 2.2。

我正在尝试使用装饰有 asp 标记助手的提交按钮将 ID (Guid) 从我的视图传递到我的控制器索引,如下所示:

<input type="submit" value="Go" asp-controller="MyController" asp-action="Index" asp-route-id="@Model.Id" />

我的控制器操作方法如下所示:

public IActionResult Index(Guid id)
{
    return View();
}

单击提交按钮时,ID 始终显示为 Guid.Empty。

我已经切换到使用具有相同标签助手值的锚标签,并且正确填充了 id:

<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>

asp-route-id="..." 放在表单标签中,而不是按钮中。