Ho due azioni del controller con lo stesso nome ma con diverse firme del metodo. Essi simile a questa:Come posso evitare AmbiguousMatchException tra due azioni del controller?
//
// GET: /Stationery/5?asHtml=true
[AcceptVerbs(HttpVerbs.Get)]
public ContentResult Show(int id, bool asHtml)
{
if (!asHtml)
RedirectToAction("Show", id);
var result = Stationery.Load(id);
return Content(result.GetHtml());
}
//
// GET: /Stationery/5
[AcceptVerbs(HttpVerbs.Get)]
public XmlResult Show(int id)
{
var result = Stationery.Load(id);
return new XmlResult(result);
}
mio test di unità non hanno alcun problema con il chiamare una o l'altra azione di controllo, ma la mia pagina di prova HTML lancia una System.Reflection.AmbiguousMatchException.
Che cosa deve cambiare per rendere questo lavoro?
Inizialmente avevo qualcosa del genere, ma non volevo cambiare tutti i miei test unitari per lanciare ActionResult sul tipo appropriato (così come aggiungere il null alla firma). Tuttavia, questo è probabilmente il modo migliore in quanto non mi interessa per le altre opzioni. Risposta +1 –
Nota che non è possibile sovraccaricare un'azione. http://stackoverflow.com/questions/436866/can-you-overload-controller-methods-in-asp-net-mvc – Samuel