2011-06-26 51 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

我有點看到你在得到什麼。作爲比喻,控制器是一個盒子;頂部的屬性會告訴我它的內容。但是,通過操作,您對方法本身更感興趣,而不是容納它的容器。 –