ASP.NET MVC でのコントローラー メソッドのオーバーロード
ASP.NET MVC では、名前が同じでパラメータが異なる複数のコントローラー メソッドを定義しようとすると、開発者が「AmbiguousActionException」エラーに遭遇することがよくあります。このエラーは、フレームワークがリクエストに基づいて実行するメソッドを決定できないことを示します。
エラー メッセージにもかかわらず、警告が表示されてもコントローラー メソッドをオーバーロードする可能性があります。 ASP.NET MVC は、メソッドが同じ名前で異なるパラメーター型を持つことができる従来の方法でのメソッドのオーバーロードをサポートしていません。代わりに、開発者は同様の結果を得るために [ActionName]
属性に依存する必要があります。
例:
<code class="language-csharp">[HttpPost] public ActionResult MyMethod(int id) { /* ... */ } [HttpPost] [ActionName("MyMethod")] public ActionResult MyMethod(string name) { /* ... */ }</code>
この例では、2 つの MyMethod
メソッドは同じ HTTP メソッド (HttpPost) を持ちますが、異なるパラメータを受け入れます。 [ActionName]
属性を 2 番目のメソッドに適用することで、効果的に別の操作名 (「MyMethod」) を割り当て、オーバーロードを実装します。
[ActionName]
属性を使用してメソッドをオーバーロードするには、同じ HTTP メソッドを共有している場合でも、各メソッドに一意の操作名を与える必要があることに注意することが重要です。この制限により、リクエストのルーティングにおけるあいまいさが防止されます。
以上がASP.NET MVC でコントローラー メソッドをオーバーロードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。