1

私はASP.NETMVCを初めて使用し、昨年はWebフォームのバックグラウンドを持っていましたが、最近MVC 3を使い始めましたが、良い答えがないように思われる質問があります(現時点では見つかりません)。ここに投稿したかった。どんな助けでもいただければ幸いです。私の質問は、コントローラー、コントローラーアクション、ビュー、およびglobal.asaxのみに焦点を当てています。

  1. ビュー、コントローラー、およびコントローラー内のアクションとの関係を理解し​​ています。ただし、ビューの作成に関しては、作成されたビューに関連付けられているすべてのアクションをglobal.asaxに登録する必要がありますか?例:空のプロジェクトを作成する場合、global.asaxは、インデックスとIDのアクションがオプションであるホームコントローラーのデフォルトルートをすでに作成しています。したがって、ホームコントローラーに基づいて「AboutUs」という別のビューを作成する場合、それをホームコントローラーの一部としてglobal.asaxに登録する必要がありますか?

  2. ルートのglobal.asaxでのコントローラー/アクションと登録に関して、1対1の関係がありますか?複数のコントローラーアクションをコンマで区切って同じステートメントに追加できますか(global.asaxのホームコントローラーの例を使用してから、同じステートメントに別のアクションを追加する場合や、新しいステートメントを外部に追加する必要がある場合など)それ?

  3. コントローラ/ビュー/ルートを作成するときに使用する「ベストプラクティス」標準はありますか?

WebフォームサイトをMVC3に変換していて、質問に対する適切な回答があまり見つからないため、これらの質問をしています。ありとあらゆる回答を楽しみにしています。

4

2 に答える 2

1

Scott Guは、MVCルーティングがどのように機能するかについて、彼のブログにすばらしい投稿をしました。ぜひチェックしてください。

Global.asaxにはすべてのルートに一致するパターンがありますが、必ずしも明示的に一致する必要はありません。たとえば、「AboutUs」というビューがある場合、パターンマッチングにより機能するという名前のコントローラーアクションがある場合は、次のようになります。

 routes.MapRoute(
     "Default", // Route name
     "{controller}/{action}/{id}", // URL with parameters
     new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
 );

行:"{controller}/{action}/{id}"は、ルーティングエンジンによって照合されているパターンです。上記に一致するすべてのURLパスが正しいビューに送信されることを示しています。たとえば、URLをたどる Home/AboutUsと、パラメータなしでホームコントローラの[Aboutus]ビューに移動します。

2番目の質問に関しては、選択されたコントローラーもパターンの一部です。Contactという2番目のコントローラーを追加し、次にemailというアクションを追加した場合でも、このURLは同じパターンに従う Contact/Emailため、ルートを追加する必要はありません。

MVCルーティングがどのように機能するかについてのその他のすばらしいブログ投稿があります。これは正しい方向を示します。Asp.Netブログ投稿、およびMSDNに1つ

于 2012-08-12T13:41:44.857 に答える
0
  1. いいえ、Global.asaxで作成するすべてのビューを登録する必要はありません。規則に従う限り、ルーティングはそれを処理します(つまり、自分用に定義されたルーティング、またはこのパスを使用する場合は自分で定義したルーティング)

  2. 二度とない。コントローラ内に新しいアクションを作成する場合、通常、そのアクションのビューを作成して、意図したとおりにレンダリングする必要があります(ajax / jsonアクションはこのルールの例外として機能する場合があります)。ただし、ここでも、Global.asaxに何も登録する必要はありません。そのグローバルファイルで定義されているルーティング規則に従っている限り。

  3. MVCの経験が付いていると思います。一般に、すべての問題には独自の解決策があるため、一般的なアプローチではなく、目前の課題に対応します。ただし、MVC 3で定義されたデフォルトから始めることができます。IEはルーティングを再定義し、複数のコントローラーにそれぞれ複数のアクションを設定します。繰り返しますが、規則に従います。

お役に立てれば。

于 2012-08-12T15:57:33.927 に答える