上下文
使用GET方法构建的视图此时需要两个参数:id
和date
。在此视图中,有一个表单使用参数id
GET方法
[HttpGet]
public async Task<IActionResult> DetailsAdmin(int? id, [ModelBinder(typeof(PModelBinder))]DateTime? date)
{
{...}
}
POST方法
[HttpPost, ActionName("DetailsAdmin")]
[ValidateAntiForgeryToken]
[Route("HechosLiquidadors/DetailsAdmin/{id}")]
public async Task<IActionResult> DetailsAdmin(int? id)
{
{...}
}
问题:
当View中的表单将信息发送到Controller时,它将转到GET Action而不是POST操作。
表单:
<form id="@(String.Format("{0}{1}","form",Model[i].HechosID))"
asp-action="DetailsAdmin" method="post" asp-route-id="@Model[i].HechosID" ></form>
我尝试过使用自定义路由到POST操作方法,但没有运气。如何更正此问题,以便表单正确指向POST操作?
答案 0 :(得分:0)
在两个动作方法中,所有参数都是可选的。因此Mvc无法选择“最佳候选人”执行方法。 如下所示更改第一个操作并检查ID不是0:
[HttpGet]
public async Task<IActionResult> DetailsAdmin(int id = 0, [ModelBinder(typeof(PModelBinder))]DateTime? date)
{
if (id != 0)
{
}
{...}
}