在阅读有关mcv3的信息时,我遇到了一个名为[ActionName]的属性名称。实际上,它为操作方法重新命名。我测试了一个让我思考的场景;内部工作如何。当我的控制器类中具有以下两个操作方法时

[ActionName("Test")]
public ActionResult Index()
{
      return View();
}
[ActionName("Index")]
public ActionResult Test()
{
      return View();
}


我认为这将导致某种无限循环,或者会产生一些歧义异常。但是同样可以正常工作,当我给这个URL http://mysite:1234/mycontroller时调用第二种方法

是什么使MVC引擎选择第二种方法而不是第一种?

知道为什么会这样吗?

最佳答案

菲尔·哈克(Phil Haack)关于此事的帖子:How a method becomes an action

简而言之:ControllerActionInvoker使用反射来找到与操作名称匹配的方法。

ActionNameAttribute重新定义方法的名称。

另请注意,您的视图名称与ActionName而不是MethodName匹配:方法索引将搜索名称为“ Test”的视图

关于asp.net - MVC3 ActionName属性,其行为和效果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10100822/

10-11 06:52