2011-06-26 41 views
7

无法想象这个问题还没有被问到......虽然,我找不到它。在ASP.NET MVC 3中是否有类类型声明的ActionNameAttribute?

所以这里有云:我用的ActionNameAttribute了很多在ASP.NET MVC 3筛选我的操作方法:

[ActionName("confirm")] 
[HttpGet] 
public ActionResult Confirm(string stuffTitle) 
{ 
    ActionResult resultView = CreateSomeStuff(stuffTitle); 
    return resultView; 
} 

但是,我怎么能做到上课一样吗?像这样:

[ActionName("personal")] 
public class AccountController : Controller 

ActionNameAttribute它只能用于方法声明。但我想它应该以某种方式在类类型声明上可能。也许我还没有听说过的其他属性?其他一些解决方法?

任何想法?提前致谢!!

+1

控制器上的ActionName?目的是什么?之前没有问过这个问题,因为目标看起来很奇怪,几乎没有任何意义。你想在这里做什么? –

+0

你为什么不改变你的控制器的名字? – ZippyV

+1

我发现这篇文章寻找一种方法来给一个控制器一个别名,这正是我认为@Monty之后。我的理由是命名约定和期望的URL之间存在冲突。 –

回答

6

我真的很难明白你在做什么。你想改变你的控制器的名字或者什么?如果是这样使用的路由:

routes.MapRoute(
    "FooRoute", 
    "foo/{action}/{action}/{id}", 
    new { controller = "Account", action = "Index", id = UrlParameter.Optional } 
); 

我们foo/someaction所有请求都将被路由到Account控制器的相应的动作。

+0

在我看来给出的最佳答案。就像路由路径中的{action}和{id}别名一样,我认为将路由路径中的{controller}别名添加更多控制也是合乎逻辑的。不幸的是,我无法按照我的预期。创建一条单独的路线完成这项工作,谢谢! –

0

MVC控制器包含可映射到Actions的方法。正如Darin所说,在课堂上达到什么目的?说这个班有一个'名单'行动,没有帮助。你不得不说哪种方法,不是吗?

我在Phil Haack的博客http://haacked.com/archive/2008/08/29/how-a-method-becomes-an-action.aspx上发现了这篇文章。如果您已经阅读过,请提前致歉。我认为他所说的和一些由此产生的讨论可能会对你有所帮助。

+0

也许几乎没有任何说明:因为我使用ActionNameAttribute来混淆一个方法(压缩f.i.,i17n),所以我只是认为类声明也应该是这样。 –

+0

我有点看到你在得到什么。作为比喻,控制器是一个盒子;顶部的属性会告诉我它的内容。但是,通过操作,您对方法本身更感兴趣,而不是容纳它的容器。 –