【发布时间】:2020-11-13 08:18:56
【问题描述】:
我在一个视图中有两个表单,一个 ViewModel,每个人都包含两个提交按钮,每个人都有两个独立的操作。
问题
当我提交其中任何一个时,就会出现此错误
处理请求时发生未处理的异常。
AmbiguousMatchException:请求匹配多个端点。
匹配:DAS.Controllers.DocumentsController.CreateIn (DAS)
DAS.Controllers.DocumentsController.CreateEx (DAS)
观点
// one ViewModel
@model VMCreateDoc
// First form to submit "CreateIn" action
<form asp-controller="Documents" asp-action="CreateIn" enctype="multipart/form-data">
// bla bla bla
<input type="submit" class="btn btn-success" value="Save In">
</form>
// Second form to submit "CreateEx" action
<form asp-controller="Documents" asp-action="CreateEx" enctype="multipart/form-data">
// bla bla bla
<input type="submit" class="btn btn-success" value="Save Ex">
</form>
动作
// DocumentInternal Included in the same ViewModel VMCreateDoc
[HttpPost("FileUpload")]
public IActionResult CreateIn(DocumentInternal documentIn, List<IFormFile> files)
{
// bla bla bla
return View();
}
// DocumentExternal Included in the same ViewModel VMCreateDoc
[HttpPost("FileUpload")]
public IActionResult CreateEx(DocumentExternal documentEx, List<IFormFile> files)
{
// bla bla bla
return View();
}
视图模型
public class VMCreateDoc
{
public DocumentExternal DocEx { get; set; }
public DocumentInternal DocIn { get; set; }
}
似乎每个提交都提交了两种形式。于是,冲突就发生了。
你认为这个问题可以解决什么?
【问题讨论】:
-
不
[HttpPost("FileUpload")]指定CreateIn和CreateEx应该作为一个名为FileUpload的操作出现吗?看起来 ASP.NET Core 仅在请求到来时才发现此错误,并且无法决定调用哪个方法 -
我怀疑如果您检查 HTML 源代码,您会发现两个表单具有相同的
action、FileUpload -
@PanagiotisKanavos 哇,没错。当我更改路线名称时,冲突已经消失。太感谢了。谢谢大家。
标签: asp.net-mvc asp.net-core tag-helpers