AmbiguousActionException:MVC Core中匹配的多个动作

时间:2016-11-27 12:17:34

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

我宁愿拥有一个只有两种方法的简单控制器。

public class ColorsController : Controller
{
    // GET: /<controller>/
    public IActionResult Index()
    {
        return View();
    }

    public IActionResult Index(int id)
    {
        return View();
    }
}

我在不同的命名空间中也有一个同名的api。我尝试实现了存储库模式,突然间得到了AmbigousActionException。我的Web api包含在WebUI.controllers.api命名空间中。 Web api是:

namespace ePress.WebUI.Controllers.api
{
[Route("api/[controller]")]
public class ColorsController : Controller
{
    private IColorRepository _repository;
    public ColorsController(IColorRepository colorRepository)
    {
        _repository = colorRepository;
    }
    // GET: api/values
    [HttpGet]
    public IActionResult Get()
    {
        return Ok(_repository.Get());
    }

    // GET api/values/5
    [HttpGet("{id}")]
    public IActionResult Get(int id)
    {
        var color = _repository.Get(id);
        if (color != null)
            return Ok(color);
        return NotFound("Color not found");
    }
 }

这是Startup类中的路由配置:

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

甚至将主控制器的名称更改为Colors2Controller,我仍然遇到了同样的错误。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

我一直在用非常基本的东西拉我的头发几个小时。 碰巧我控制器中的2个动作都在评估。 所以我所要做的就是评论出一种行动方法。

public class ColorsController : Controller
{
    // GET: /<controller>/
    public IActionResult Index()
    {
        return View();
    }

    //public IActionResult Index(int id)
    //{
    //    return View();
    //}
}

它现在解决了,因为api和我实现的存储库模式,它不是问题。 希望这有助于另一个人。