2016-11-27 49 views
2

我寧願有一個簡單的控制器只有2個這樣的方法。AmbiguousActionException:在MVC核心中匹配的多個動作

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"); 
    } 
} 

這是啓動類的路由配置:

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

即使更名主控制器來Colors2Controller,我還是得到了同樣的錯誤。 任何幫助將不勝感激。

回答

1

我一直在拉我的頭髮幾個小時的東西,這是非常基本的。 它發生了,我的控制器中的2個動作都評估相同。因此,我所要做的就是評論一下其中一種行動方法。

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

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

現在解決了,由於我實現的api和存儲庫模式,它不是問題。 希望這可以幫助另一個人。