ASP.NET MVC でのメソッドのオーバーロード
メソッドのオーバーロードは一般的なプログラミング手法ですが、ASP.NET MVC では可能ですか?
ASP.NET MVC でコントローラー メソッドをオーバーロードしようとすると、「コントローラー タイプ 'MyController' のアクション 'MyMethod' に対する現在の要求は、次のアクション メソッド間であいまいです:」というエラー メッセージが表示されることがよくあります。
このエラーは、ASP.NET MVC が、同じアクション名を使用している場合でも、パラメーター リストが異なるオーバーロードされたメソッドを区別できないために発生します。
ActionName 属性を使用したソリューション
この制限を克服するには、[ActionName]
属性を使用できます。一意のアクション名を指定することで、ASP.NET MVC にオーバーロードされた各メソッドを区別するように指示できます。
例:
<code class="language-csharp">[ActionName("MyOriginalAction")] public ActionResult MyAction(int id) { ... } [ActionName("MyOverloadedAction")] public ActionResult MyAction(string name) { ... }</code>
制限事項
[ActionName]
属性ではコントローラー メソッドのオーバーロードが可能ですが、同じ HTTP メソッドに対して異なるアクション名を使用する必要があります。これは、コードの一貫性と読みやすさに影響を与える可能性があります。
代替方法
コントローラー メソッドをオーバーロードする代わりに、次のような他の設計パターンの使用を検討してください。
以上がASP.NET MVCでコントローラーメソッドをオーバーロードできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。