1

エリアのAdminAreaRegistration.csファイルではなく、global.asaxファイルにエリアへのルート(Adminと呼ばれる)を登録する場合、AdminAreaRegistration.csファイルを削除できない理由はありますか?それが欠落している場合、例外をスローするかもしれないいくつかの段階でそれを呼び出すかもしれないフレームワーク内の他のコードはありますか?xxxxxxxAreaRegistration.csを削除できますか?

コメントで尋ねたようフィリップハドンによってthis excellent postで強調されているように、ここでのglobal.asaxにエリアを登録するためのコードが

routes.MapRoute(
    "AdminAreaRoute", 
    "Admin/{controller}/{action}/{id}", 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
    new string[] { "Payntbrush.Presentation.Demo.MVC3.Areas.Admin.Controllers" } 
).DataTokens.Add("Area", "Admin"); 

routes.MapRoute(
    "SiteAreaRoute", 
    "{controller}/{action}/{id}", 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
    new { controller = "/|Home|Account" }, // Constraint's on the URL (second param above) {controller} segment 
    new string[] { "Payntbrush.Presentation.Demo.MVC3.Areas.Site.Controllers" } 
).DataTokens.Add("Area", "Site"); 

あるキーは、DataTokensコレクションを使用しています。必要な数だけ追加することができますが、明示的に名前をつけた領域の後にルートサイト領域を配置して、{controller}/{action}/{id}が他のマップルートより先にすべての要求をキャッチしないようにしてください。

答えて

0

私はこれらのファイルを削除しており、これまでのところ問題はありませんでした。どんな問題に遭遇しても問題ないと思います。

0

あなたの地域をglobal.asaxに登録するために使用しているコードを投稿できますか?

私が尋ねる理由は、私はxxxAreaRegistration.csクラスなしで正しくを作業領域が別のプロジェクトであっても(どこかの実装を取得することは技術的には可能であるとは思わないです。

それはそれなしではなく、実際に働いているように私はあなたが単にあなたのルートは、サブディレクトリを指している.NETを伝えるかもしれないと思うように見えるかもしれません。私はあなたには、いくつかの時点でエラーが出ることを期待する

H参照してください。AreaRegistration Class documentation

ASP.NET MVCアプリケーションで1つ以上の領域を登録する手段を提供します。

それは唯一の方法だとは言いませんが、私はそうかもしれないと思います。

+0

これを達成するためのコードを追加しました。これはうまく動作しますが、私が見つけようとしているのは、MVC 3フレームワーク内に、xxxAreaRegistrationクラスをいくつかの段階で呼び出す可能性がある他のコードがあるかどうかです。削除した場合、null例外が発生します。 – Chris

+0

Chrisさん、ここでの問題は、ルートを登録せずにそのエリアにアクセスしようとするとエラーになることです。あなたが登録している限り、あなたはそのエリアにアクセスする際に何らかのエラーを起こすべきではありません。これは、ネットが必要とする、または登録または登録されたルートを探す唯一の時間です。 – shenku

+0

今は確認できませんが、先日、私はエリア内のAreaRegistrationファイルを削除し、global.asaxの "AdminAreaRoute"ルートに頼ってリクエストが正しくルーティングされました。私は次のチャンスをもう一度チェックします。 – Chris

関連する問題