0

良い一日!

ASP.NET MVC 2とT4MVCを使用していますが、コードの魔法が発生しているようです

これをルートテーブルに追加すると、次のようになります。

routes.MapRoute(
    "Login",
    "login/",
    MVC.Profile.Login()
);

送信URLを生成するためにビューに次のようなものを書き込むときに、フレームワークはこのルールを適用することをどのように認識しますか?

<%: Url.Action(MVC.Profile.Login() %>

同じコントローラー/アクションペアに対して(パラメーターが異なる)複数の異なるルールがある場合はどうなりますか?どちらが選ばれますか?この振る舞いの良い説明はどこかにありますか?

前もって感謝します!

4

3 に答える 3

1

定義した順序でルートパターンに一致します。そのため、最後のパターンとしてデフォルトのパターンがあります。一致するパターンが見つかるとすぐに、検索を停止します。

編集

ルートマッチング中、パラメータは無視されます。コントローラーメソッドが選択されると、mvcはモデルバインディングを使用してパラメーターをメソッド変数に割り当てます。

使用しようとしているURL構造のタイプを説明できれば、おそらくもっとお手伝いできます。

于 2011-03-22T19:43:26.230 に答える
1

この作業が、T4MVCが行う魔法を、MVC自体が隠蔽して行うことから分離する方法を理解するのに役立つと思います。

T4MVCでこれを書くとき:

routes.MapRoute(
    "Login",
    "login/",
    MVC.Profile.Login()
);

これは、ストレートMVCでこれを書くのと同じです。

routes.MapRoute(
    "Login",
    "login/",
    new { controller = "Profile", action = "Login" }
);

そして、ビューで:

Url.Action(MVC.Profile.Login())

と同じです

Url.Action("Login", "Profile")

T4MVCは、強い型付け/インテリセンスの利点を提供しますが、最終的には、ストレートMVCの場合と同じです。

うまくいけば、これは物事を少しクリアするのに役立ちます:)

于 2011-03-22T23:49:39.840 に答える
-1

あなたの例は有効なMVCではありません。通常はコントローラー名、アクション、その他のパラメーターを渡します。ルーティングエンジンはそのすべての情報を使用して、使用するルートを決定します。定義したルートが多いほど、おそらくより多くの情報が得られます。一致させたいものを決定する必要があります

于 2011-03-22T20:39:22.627 に答える