2011-12-15 3 views
4

デフォルトのルートオブジェクトをエリア(「ベヒア」とも呼ばれます)内のコントローラ(「ベヒア」)に設定しました。このようMVC3のエリアへのデフォルトルートがエリア内のビューを検索しない

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

それは、そのコントローラとエリア内のアクションの罰金を見つけることができますが、それだけでこれらの場所に見えるので、それはビューを見つけることができません。

~/Views/Beheer/Index.aspx 
~/Views/Beheer/Index.ascx 
~/Views/Shared/Index.aspx 
~/Views/Shared/Index.ascx 
~/Views/Beheer/Index.cshtml 
~/Views/Beheer/Index.vbhtml 
~/Views/Shared/Index.cshtml 
~/Views/Shared/Index.vbhtml 

ながらこの場所で探しているはずです:

~/Beheer/Views/Beheer/Index.aspx 

ビューを検索するにはどうすればいいですかえ?

私はすでに試した:

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

そして、私は(名前空間で)これを試してみました:

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

しかし、何も変化します。正しいコントローラーに正しいアクションが入力されますが、ビューは見つかりません。

答えて

2

エリア登録にルートを追加する必要があります。 BeheerAreaRegistrationにはエリア名を設定するプロパティがあります。


    public class BeheerAreaRegistration : AreaRegistration 
    { 
     public override string AreaName 
     { 
     get 
     { 
      return "Beheer"; 
     } 
     } 

    public override void RegisterArea(AreaRegistrationContext context) 
    { 
     context.MapRoute("Default", // Route name 
       "{controller}/{action}/{id}", // URL with parameters 
       new { controller = "Beheer", action = "Index", id = UrlParameter.Optional } // Parameter defaults); 
    }
+0

これは既にBeheerAreaRegistrationにあります。私はここで何かを変えるべきですか? – David

+0

あなたのルートがエリア登録に設定されていて、あなたのビューがエリア/ビアーズ/ビュー/ビハールにある場合/それは動作するはずです –

+0

ありがとうございます。 MapRouteメソッドの私のURLは異なって書かれています。この "Beheer/{controller}/{action}/{id}"のように。これはデフォルトで行われました。私は他のすべてがまだ動作しているかどうかを確認する必要があります。私がページに直接行くと、URLが変わります。私はそれが '〜/ beheer/{method} 'であることを望んでいましたが、今は'〜/ {method} 'です。どうすればそのURLを取得できますか? – David

0

私はこの問題を抱えていたと私は完全に名前空間を修飾するために必要な発見し、私は、奇妙なキャッシュまたは多分何かのいくつかの並べ替えをIISプロセスを殺したまでそれが右のビューを見つけることに問題があります。そうでないかもしれない -

new[] { "Areas.Beheer" } 

new[] {"myApp.Areas.Beheer.Controllers"} 

多分あなたの問題は私に似ているになる可能性があります。

関連する問題