5

これは初心者の質問です...

デフォルトのasp.netmvc3プロジェクトを見ていて、次のようなコントローラーがあることに気づきました。

public class AccountController : Controller

コード全体を調べたところ、AccountControllerがURLの/Account/にマップされている場所が見つかりませんでした。

routes.MapRoute(..)を使用してルーティングを変更できることを発見しましたGlobal.asaxが、AccountControllerが/Account/にマップするように指定された場所はまだわかりません。

クラス名から推測される場合、それはすべてのコントローラークラスにxxxxxControllerという名前を付ける必要があることを意味しますか?

4

3 に答える 3

7

はい、その通りです。すべてのコントローラーは、エンディングの命名規則に従う必要があります"Controller"

ControllerNameCodePlexのASP.NETMVCコードのプロパティを参照してください。

public virtual string ControllerName {
    get {
        string typeName = ControllerType.Name;
        if (typeName.EndsWith("Controller", StringComparison.OrdinalIgnoreCase))
        {
            return typeName.Substring(0, typeName.Length - "Controller".Length);
        }
        return typeName;
    }
}

とにかく、独自のコントローラファクトリを使用して命名規則を変更できます。

お役に立てば幸いです。

于 2011-07-20T18:32:43.643 に答える
6

はい、これはCoC、設定より規約と呼ばれるMVCフレームワークの重要な側面です。アイデアは、クラス名、メソッド名、フォルダー構造などのデフォルトの規則に従うことをいとわない限り、物事が機能するために必要な作業の量を最小限に抑えることができるということです。あなたはそれらの慣習から逸脱したい場合にのみ努力します、それはあなたが確かに行うことができます。

MVCフレームワークには、そのような項目がいくつかあります。すべてのコントローラーがXxxxControllerという名前のクラスであるという規則に加えて、すべてのビューがView \ Xxxx\Yyyyy.cshtmlという名前のフォルダーにあるという規則があります。

于 2011-07-20T19:04:20.967 に答える
0

はい、そうです。独自のコントローラーファクトリを実装しない限り。

于 2011-07-20T18:31:25.317 に答える