同じ名前で異なるメソッドシグネチャを持つコントローラアクションが2つあります。2つのコントローラアクション間でAmbiguousMatchExceptionを回避するにはどうすればよいですか?
//
// 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);
}
私のユニットテストは、1つまたは他のコントローラのアクションを呼び出すと何の問題を持っていませんが、私のテストhtmlページはSystem.Reflection.AmbiguousMatchExceptionをスロー:彼らはこのようになります。
<a href="/Stationery/1?asHtml=true">Show the stationery Html</a>
<a href="/Stationery/1">Show the stationery</a>
この作品を変更するにはどうすればよいですか?
私はもともとこのようなものを持っていましたが、ActionResultを適切な型にキャストするために、すべての単体テストを変更したいとは思いませんでした(署名にnullを追加するだけでなく)。しかし、これは私が他のオプションを気にしないので、おそらく最良の方法です。回答+1 –
アクションをオーバーロードすることはできません。 http://stackoverflow.com/questions/436866/can-you-overload-controller-methods-in-asp-net-mvc – Samuel