我宁愿拥有一个只有两种方法的简单控制器。
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,我仍然遇到了同样的错误。 任何帮助将不胜感激。
答案 0 :(得分:1)
我一直在用非常基本的东西拉我的头发几个小时。 碰巧我控制器中的2个动作都在评估。 所以我所要做的就是评论出一种行动方法。
public class ColorsController : Controller
{
// GET: /<controller>/
public IActionResult Index()
{
return View();
}
//public IActionResult Index(int id)
//{
// return View();
//}
}
它现在解决了,因为api和我实现的存储库模式,它不是问题。 希望这有助于另一个人。