ASP.NET MVC コントローラー メソッドのオーバーロードの詳細な説明と代替手段
質問:
ASP.NET MVC コントローラーはメソッドをオーバーロードできますか?リロード試行が失敗したのはなぜですか?受け取ったエラー メッセージは次のとおりです:
「コントローラー タイプ 'MyController' の 'MyMethod' アクションに対する現在のリクエストは、次のアクション メソッド間であいまいです:」
答え:
エラー メッセージはメソッドのオーバーロードがサポートされていないことを示していますが、[ActionName]
属性を使用すると同様の効果を実現できます。
ASP.NET MVC では、同じコントローラー内でメソッドのオーバーロードは許可されません。ただし、[ActionName]
属性を使用してメソッドに別の名前を付けることができます。これにより、同じ HTTP メソッド (GET や POST など) での操作に異なるメソッド シグネチャを使用できるようになります。
メソッドのオーバーロードをシミュレートするには、名前を変更するメソッドに [ActionName]
属性を追加します。例:
<code class="language-csharp">[ActionName("MyOverloadedName")] public ActionResult MyMethod(int id) { // 重载方法的代码 }</code>
[ActionName]
の使用は真のオーバーロード メソッドではないことに注意してください。メソッドにルーティングされるアクションの名前のみが変更されます。したがって、同じ HTTP メソッドを処理するメソッドには異なる操作名を使用する必要があります。
詳細については、Phil Haack の記事を参照してください: https://www.php.cn/link/8ab84c57bf234ea2e3bf8330b47c2db1
以上がASP.NET MVC コントローラー メソッドはオーバーロードできますか?オーバーロードできない場合、どのようにすれば同様の結果を達成できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。