2011-06-26 9 views
7

この質問はまだ聞こえていないとは思いません...しかし、私はそれを見つけることができません。ASP.NET MVC 3にクラス型宣言のActionNameAttributeはありますか?

だからここには行く:どのように私はクラスのために同じことを達成することができ、

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

しかし:私はこのようなASP.NET MVC 3にActionNameAttribute私のアクションメソッドの多くを使用しましたか?このように:

[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コントローラには、アクションにマップできるメソッドが含まれています。だからダーリンが言っているように、クラスではどのような目的が達成されますか?このクラスに「リスト」アクションがあると言うと、助けにならないでしょう。どちらの方法でも言わなければならないでしょうか?

Phil Haackのブログhttp://haacked.com/archive/2008/08/29/how-a-method-becomes-an-action.aspxにこの記事が見つかりました。すでに読んだことがあれば、事前にお詫び申し上げます。私は彼が言っていることを考え、結果として得られた議論の一部があなたを助けるかもしれないと思います。

+0

多分少しの明確化:メソッドのエイリアスにActionNameAttributeを使用するので(f.i.、i17nを小文字にする)、私はクラス宣言で同じことが可能であると考えました。 –

+0

私はあなたが何を得ているのか分かります。類推として、コントローラはボックスです。上部の属性は、その中に何が入っているかを教えてくれるでしょう。しかし、アクションでは、それを保持するコンテナではなくメソッド自体にもっと興味があります。 –

関連する問題