mcv3について読むと、私は[ActionName]
という属性名を見つけました。実際には、アクションメソッドに新しい名前が付けられます。私は考えるシナリオをテストしました。内部はどのように機能していますか?私は私のコントローラクラスMVC3 ActionName属性、その動作と効果
[ActionName("Test")]
public ActionResult Index()
{
return View();
}
[ActionName("Index")]
public ActionResult Test()
{
return View();
}
で次の二つのアクションメソッドを持っているとき、私は、これは無限ループのいくつかの種類になってしまいますか、いくつかの曖昧例外を与えるだろうと思いました。しかし、同じことがうまく動作し、私はこのURLを与えるときに2番目のメソッドが呼び出されますhttp://mysite:1234/mycontroller
MVCエンジンは2番目の方法を選択し、最初のものではないのですか?
これはどうして起こりますか?
ok、優秀な投稿。私が得た記事から、魔術師はControllerActionInvokerです。これはルートデータ辞書からデータ(キー "アクション"から)を読み込みます。これは文字列値を取得します。次に、ActionNameが最初に検索され、次にメソッド名が検索されます。 – thinkmmk
@thinkmmkメソッドを探しません。 'action'を探します。 ActionNameAttributeを使用しない場合は、次のようになります。method = action –
@AndrewF自分のメソッドに対してActionName属性がない場合、ControllerActionInvokerは、コントローラークラスのリフレクションを通じてメソッド名を検索します。またはmvcが存在しない場合、アクション名属性をそれ自身で置きますか? – thinkmmk