我有一个相同的名称的行动,一个预计没有参数,另一个期待一个ID,当我尝试浏览我的网址我得到以下异常。与MVC控制器重载
处理请求时发生未处理的异常。
AmbiguousActionException:匹配多个操作。下面 行动匹配的路由数据,并把所有的约束满足:
Mailer.Controllers.MailBuilderController.MailBody(梅勒) Mailer.Controllers.MailBuilderController.MailBody(梅勒)
我MailBuilder控制器。
//[HttpGet("mailbuilder/MailBody")]
public IActionResult MailBody()
{
Body model = new Body();
return View(model);
}
//[HttpGet("mailbuilder/MailBody/{id}")]
public IActionResult MailBody(int id)
{
Body model = _mailBuilderService.GetBody(id);
return View(model);
}
如果我删除上面的注释,我可以导航,但我不能重定向到下面的方法中的操作。
public IActionResult SaveBody(Body model)
{
_mailBuilderService.AddBody(model);
return RedirectToAction("MailBody", model.Id);
}
关于第二个想法 - 您的实际问题可能是我描述的第二个问题与路由数据不是一个对象... –
是的,问题是他的RedirectToAction正在使用“Id”与大写I,它将不匹配实际生成url时使用小写的id。您需要'new {id = model.Id}'为路由生成器创建正确的路由。他的帖子行为是否是同一个名字是无关紧要的。 –