Ben aynı adı taşıyan, ancak farklı yöntem imzalarla iki kontrolör eylemleri var.İki denetleyici eylemi arasında AmbiguousMatchException'ı nasıl önleyebilirim?
//
// 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);
}
Birliğim testleri birini veya diğer denetleyici eylemi çağıran ile hiçbir sorunu var, ama benim test html sayfası System.Reflection.AmbiguousMatchException atar: Onlar buna benziyor.
<a href="/Stationery/1?asHtml=true">Show the stationery Html</a>
<a href="/Stationery/1">Show the stationery</a>
Bunu yapmak için neyin değiştirilmesi gerekiyor?
Başlangıçta böyle bir şey vardı, ama uygun türe ActionResult döküm için bütün birim testleri değiştirmek (yanı sıra imzaya null adlı ekleyin) istemiyordu. Ancak, bu diğer seçenekler için umurumda değil muhtemelen en iyi yoldur. Cevap +1 –
Bir eylemi aşırı yükleyemeyeceğinizi unutmayın. http://stackoverflow.com/questions/436866/can-you-overload-controller-methods-in-asp-net-mvc – Samuel