在阅读有关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/