如何在一个 asp.net 核心视图中处理两种形式?
How to handle two forms in one asp.net core view?
我在一个视图中有两个表单,一个 ViewModel,每个人都有两个提交按钮,每个人都有两个独立的操作。
问题
当我提交其中任何一个时,出现此错误
An unhandled exception occurred while processing the request.
AmbiguousMatchException: The request matched multiple endpoints.
Matches:
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; }
}
似乎每次提交都提交两种形式。于是,冲突就发生了。
你认为这个问题可以解决什么?
感谢所有试图帮助我的人。非常感谢 Panagiotis Kanavos。
问题出在上面的注释上。
我只是改了一下,问题就解决了。
像这样
// DocumentInternal Included in the same ViewModel VMCreateDoc
[HttpPost("documentIn")]
public IActionResult CreateIn(DocumentInternal documentIn, List<IFormFile> files)
{
// bla bla bla
return View();
}
// DocumentExternal Included in the same ViewModel VMCreateDoc
[HttpPost("documentEx")]
public IActionResult CreateEx(DocumentExternal documentEx, List<IFormFile> files)
{
// bla bla bla
return View();
}
我在一个视图中有两个表单,一个 ViewModel,每个人都有两个提交按钮,每个人都有两个独立的操作。
问题
当我提交其中任何一个时,出现此错误
An unhandled exception occurred while processing the request.
AmbiguousMatchException: The request matched multiple endpoints.
Matches: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; }
}
似乎每次提交都提交两种形式。于是,冲突就发生了。
你认为这个问题可以解决什么?
感谢所有试图帮助我的人。非常感谢 Panagiotis Kanavos。
问题出在上面的注释上。
我只是改了一下,问题就解决了。
像这样
// DocumentInternal Included in the same ViewModel VMCreateDoc
[HttpPost("documentIn")]
public IActionResult CreateIn(DocumentInternal documentIn, List<IFormFile> files)
{
// bla bla bla
return View();
}
// DocumentExternal Included in the same ViewModel VMCreateDoc
[HttpPost("documentEx")]
public IActionResult CreateEx(DocumentExternal documentEx, List<IFormFile> files)
{
// bla bla bla
return View();
}