同じ名前のコントローラーメソッドを 2 つ持つことは可能ですか?
質問する
3235 次
1 に答える
2
あなたが話していることを混乱させるコントローラーメソッドについて言及しています。C# クラス メソッドですか、それともコントローラー アクションですか? 両方答えさせてください。
純粋な C# はそれを許可しません
C# では、同じシグネチャを持つ 2 つのメソッドを使用することはできません。これは、同じタイプの同じ名前と同じ数のパラメーターを意味します。
public int Calculate(int a, int b) { ... }
public int Calculate(int first, int second) { ... } // compiler ERROR
しかし、Asp.net MVC コントローラーのアクションはそれを可能にします
Asp.net MVC コントローラー アクションについて話している場合は、もちろん可能です。属性を使用ActionName
して、必要なことを達成します。
public ActionResult Common() { ... }
[ActionName("Common")]
public ActionResult CommonAgain() { ... } // C# signature differs
しかし、リクエストが入ったときにどれを使用するかをアクションインボーカーが知るために、これらのいずれかに他のメソッドセレクター属性が必要です...そのままでは、404ランタイムエラーが発生します。1つは通常のリクエストアクションである必要がありますが、もう1つはAjaxリクエストが来たときに実行する必要があります。または同様です。ある程度の区別が必要です。
于 2013-03-21T09:17:39.867 に答える