コントローラでメソッドを作成し、いくつかの引数を入力するだけで、フォームの送信をクリックした後にそれがわかるのはどうしてですか?内部的には、どのようにして適切な方法を見つけ、私がそれらの議論を望んでいることをどのように理解するのでしょうか。
2 に答える
一言で言えば:
ルーティングエンジンはHttpRequestを処理し、要求されたURLをチェックします。最初のルート一致が見つかると、の新しいインスタンスを作成
MvcRouteHandler
し、RouteValueDictionary内のURLの分割されたトークンを渡します。ルート
MvcRouteHandler
はリクエストを受け取り、コントローラークラスインスタンスをインスタンス化しようとします。慣例により、「XXXXXXController」と呼ばれるクラスを検索します。ここで、Xはルート内の{controller}パラメーターに置き換えられます。コントローラが見つかると、ルートの{action}パラメータで指定された適切なメソッドを呼び出します。ルートに存在する{id}などの名前付き引数は、パラメーターとしてメソッドに渡されます。
基本的に、ASP.Net MVCが「知っている」ことはすべて、ルート情報から取得されます。薄い空気からパラメータを区別することはできません-それらはルート解析から来なければなりません。要求されたURLに情報が存在しない場合、その情報をメソッドに渡すことはできません。
ルートに。の代わりに代替ハンドラーを使用させることで、フレームワークの動作をオーバーライドできることにも注意してくださいMvcRouteHandler
。フレームワークは非常に拡張可能であるため、多くのポイントでカスタム機能をプラグインできます。