【问题标题】:MVC: AmbiguousActionException: Multiple actions matchedMVC:AmbiguousActionException:匹配多个动作
【发布时间】:2018-12-05 06:19:10
【问题描述】:

我在创建两个同名的动作时遇到了一些问题,但其中一个有参数,另一个没有,我总是得到这个错误:

错误:

AmbiguousActionException:匹配多个动作。以下操作匹配路线数据并满足所有约束:

这些是我的行动:

public IActionResult Skills(string skill)
{
   return View("SkillDetails");
}

public IActionResult Skills()
{
   return View("Skills");
}

这些是我的路线:

app.UseMvc(routes =>
{
    routes.MapRoute(
        name: "WithSkill",
        template: "Home/Skills/{skill}");

    routes.MapRoute(
        name: "default",
        template: "{controller=Home}/{action=Index}/{id?}");
});

【问题讨论】:

  • 您还有哪些其他路线,是您在所有其他路线之前显示的路线

标签: asp.net-mvc asp.net-core-mvc


【解决方案1】:

您无法仅通过操作参数来区分。尝试重命名操作,或者如果一个是 Get 一个是 Post,则使用不同的 HttpMethod。或者做这样的事情。

public IActionResult Skills(string skill)
{
   if(string.IsNullOrEmpty(skill)
      return View("Skill");
   return View("SkillDetails");
}

【讨论】:

    猜你喜欢
    • 2019-11-13
    • 1970-01-01
    • 2018-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-06
    相关资源
    最近更新 更多