2016-11-27 5 views
2

Ich habe eher einen einfachen Controller mit nur 2 Methoden wie diese.AmbiguousActionException: Mehrere Aktionen in MVC Core

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

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

Ich habe auch eine API mit dem gleichen Namen in einem anderen Namensraum. Ich habe versucht, das Repository-Muster zu implementieren und bekomme plötzlich AmbigousActionException. Meine Web-API ist im Namespace WebUI.controllers.api enthalten. Web api ist:

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

Dies ist die Route Konfiguration in der Klasse Startup:

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

geändert Sogar den Namen der Hauptsteuerung zu Colors2Controller, und ich habe immer noch die gleichen Fehler. Jede Hilfe wird geschätzt.

Antwort

1

Ich hatte meine Haare mehrere Stunden lang an etwas ganz Einfachem gezogen. Es ist passiert, dass die 2 Aktionen in meinem Controller alle gleich bewertet haben. Also musste ich nur eine der Aktionsmethoden auskommentieren.

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

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

Es löst jetzt, es war kein Problem wegen der API oder das Repository-Muster, das ich implementiert habe. Hoffe das hilft einer anderen Person.

Verwandte Themen