Ich habe zwei Controller-Aktionen mit demselben Namen, aber unterschiedlichen Methodensignaturen. Sie sehen wie folgt aus:Wie kann ich AmbiguousMatchException zwischen zwei Controller-Aktionen vermeiden?
//
// 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);
}
My Unit-Tests haben kein Problem mit einem Aufruf oder andere Controller-Aktion, aber mein Test HTML-Seite wirft einen System.Reflection.AmbiguousMatchException.
<a href="/Stationery/1?asHtml=true">Show the stationery Html</a>
<a href="/Stationery/1">Show the stationery</a>
Was muss geändert werden, damit dies funktioniert?
Ich hatte ursprünglich so etwas, aber ich wollte nicht alle meine Unit-Tests ändern, um ActionResult auf den entsprechenden Typ zu setzen (und der Signatur den Nullwert hinzuzufügen). Dies ist jedoch wahrscheinlich der beste Weg, da mir die anderen Optionen egal sind. Antwort +1 –
Beachten Sie, dass Sie eine Aktion nicht überlasten können. http://stackoverflow.com/questions/436866/can-you-overload-controller-methods-in-asp-net-mvc – Samuel