使用标签助手无法处理提交的视图将参数传递给控制器
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="..."
放在表单标签中,而不是按钮中。
我正在使用 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="..."
放在表单标签中,而不是按钮中。