2

簡単な質問ですが、新しいMVC ASP.Netアプリ用の新しいコントローラーを作成する場合、使用するコントローラーをどのように認識しますか。より具体的には、新しいコントローラーを作成し、それをSockControllerと呼んで、そのコントローラーを使用する場合は、に移動しhttp://mywebapp/sockます。/ Sock /がSockControllerにリンクされていることをWebアプリはどのようにして知りましたか?どこかにマッピングはありますか?または、そうでない場合は、作成時に名前からコントローラーを省略して呼び出すとどうなりますか。つまり、SockContと呼びます。

注:私はWeb開発者ではないので、たくさんのテキストを含むページへのリンクを投稿しないでください。短い簡単な答えを探しています。

4

1 に答える 1

2

ASP.NET ルーティングは、ルート値を取得し、最後に "Controller" を追加することで、URL からコントローラーの名前を抽出します。したがって、「/home/」は「HomeController」を返します。

次に、ASP.NET はリフレクションを使用して、プロジェクトのアセンブリ (または参照されたアセンブリ) 内のすべてのクラスを調べ、System.Web.Mvc.Controller から継承され、"HomeController" と呼ばれるクラスを見つけます。次に、デフォルトのパラメーターなしのコンストラクターを使用して、そのインスタンスを作成します。

次に、Route アクションをコントローラーのメソッドに一致させます。

このプロセスは「ディスパッチ」と呼ばれ、同様のパターンが PHP や Ruby-on-Rails などで見られますが、これらのような動的言語では、クラス名を実際のオブジェクトに解決する方法が異なります (CakePHP はクラスの自動読み込みバインディングを使用して、クラス定義など)。

于 2012-07-31T17:54:19.150 に答える