0

考えていた質問があります。

ブラウザにURLを入力して[Enter]をクリックすると、対応するコントローラのコードが実際に実行されるまでどうなりますか?

asp.netmvcアプリケーションと次のような簡単なコントローラーがあるとします。

public class HomeController : Controller
{
  public ActionResult About(int id = 25)
  {
    //code
  }
}

したがって、そのように入力するとmyUrl/home/about?id=56、コントローラーが呼び出されます。{controller}/{action}/{id}デフォルトで宣言されているようなルーティングパターンがあることは知っています。しかし、URLがそのパターンに一致する場合、コントローラーインスタンスが作成されますか、それともどうなりますか?Resolverクラスなどはありますか?URLの「ホーム」が?と一致するようにすべてのコントローラーを含むリストのようなものはありますHomeControllerか?

コントローラーシグニチャーのidパラメーターは、モデルバインディングを使用して、リクエストコンテキストの対応するid値にバインドされることを知っています。しかし、ここでは他にもたくさんの魔法が起こっているに違いありません。

誰かが新鮮な混乱したasp.netmvcユーザーを助けることができることを願っています

4

1 に答える 1

0

手短に:

  1. DefaultControllerFactoryリフレクションを使用して、その名前でコントローラーを見つけてインスタンス化します (詳細)
  2. ControllerActionInvokerリフレクションを使用して名前でアクションを見つけて呼び出します (詳細)

全体的な説明はここにあります。

于 2013-03-20T17:24:39.753 に答える