将参数从视图传递到控制器,标签助手在提交时不起作用

我正在使用 ASP.NET Core 2.2。


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


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


慕村225694
浏览 89回答 1
1回答

幕布斯7119047

将 放在asp-route-id="..."表单标签中,而不是放在按钮中。
打开App,查看更多内容
随时随地看视频慕课网APP