2016-03-25 23 views
0

私はASP.NET MVCアプリケーションを開発しています。表示されたコンテンツ MVCが特定のアクションを表示できません

  • データのための - - JSONデータを返すコントローラ、
  • のために私がいない - エラー

  • ページなどの共有機能のための

    • スキーム:コンテンツは、いくつかの領域に分割されエリアに割り当てられていないコントローラがある。

      エリア名を入力せずにPagesコントローラにアクセスしたい場合は、ルートのエリア名でアクセスする必要があります。

      だから私はhost/Administration/Users

      AdministrationページでアクションUsersを表示したいと私はhost/Scheme/Error/DatabaseTimeoutErrorコントローラからDatabaseTimeoutアクションを表示したいです。

      同様に、CreateアクションがCodesコントローラからDataエリアの下にあります。host/Data/Codes/Createエリアがあります。

      問題:Pages領域が期待どおりに機能し、Data領域が期待通りに機能し、Scheme領域が期待どおりに機能しません。 host/Scheme/Error/DatabaseTimeoutと入力すると404が返されます。

      誰かが間違っていると教えてください。

      のGlobal.asax:

      protected void Application_Start() 
          { 
           AreaRegistration.RegisterAllAreas(); 
           FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
           RouteConfig.RegisterRoutes(RouteTable.Routes); 
           BundleConfig.RegisterBundles(BundleTable.Bundles); 
          } 
      

      RouteConfig.cs

      public static void RegisterRoutes(RouteCollection routes) 
          { 
           routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
          } 
      

      DataAreaRegistration.cs

      public override void RegisterArea(AreaRegistrationContext context) 
          { 
           context.MapRoute(
            "Data_default", 
            "Data/{controller}/{action}/{id}", 
            new { action = "Index", id = UrlParameter.Optional }, 
            namespaces: new[] { "MyWebApplication.Areas.Data.Controllers" } 
           ); 
          } 
      

      PagesAreaRegistration.csここ

      は、アプリケーションコードの一部であります:

      public override void RegisterArea(AreaRegistrationContext context) 
          { 
           context.MapRoute(
            "Pages_default", 
            "{controller}/{action}/{id}", 
            new { controller="Home", action = "Index", id = UrlParameter.Optional }, 
            namespaces: new[] { "MyWebApplication.Areas.Pages.Controllers" } 
           ); 
          } 
      

      SchemeAreaRegistration.cs:Pages領域から

      public override void RegisterArea(AreaRegistrationContext context) 
          { 
           context.MapRoute(
            "Scheme_default", 
            "Scheme/{controller}/{action}/{id}", 
            new { action = "Index", id = UrlParameter.Optional }, 
            namespaces: new[] { "MyWebApplication.Areas.Scheme.Controllers" } 
           ); 
          } 
      

      AdministrationController.cs:Data領域から

      namespace MyWebApplication.Areas.Pages.Controllers 
      { 
          public class AdministrationController : Controller 
          { 
           // action methods... 
          } 
      } 
      

      CodesController.cs:

      namespace MyWebApplication.Areas.GridData.Controllers 
      { 
          public class CountryCodesController : Controller 
          { 
           // action methods... 
          } 
      } 
      

      ErrorController。SchemeエリアからCS:

      namespace MyWebApplication.Areas.Scheme.Controllers 
      { 
          public class ErrorController : Controller 
          { 
           // action methods... 
          } 
      } 
      

      EDIT: [OK]を

      、今私は本当に混乱しています。

      だからSchemeエリアの下で、私は他の人の間で、持っている: - すべてのためのマスターページは、ページ を示しているwchich _Layout.cshtmlファイル、 - Menuアクション用のビューで、_layout

      にレンダリングされMenu.cshtmlを、 Menuビューはによってレンダリングされます。

      @{Html.RenderAction("Index", "Menu", new { area="Scheme" });} 
      

      メニューは、しかし、微細化されています...多くのアクションリンクがあるメニューで

      @Html.ActionLink("Manage users", "Users", "Administration", new { area = "Pages" }, null) 
      

      そして、それは次のようにルートを与える:host/Scheme/Administration/Users

      本家の領域が指定されましたが、それは次のように書かれて、別のページに誘導します。エリアのパラメータをarea = ""に変更しようとしましたが、助けませんでした。

      困ったことに私は混乱しており、私の仕事はさらに進んでいません。あなたがhost/Scheme/Error/DatabaseTimeoutを入力すると、あなたがSchemeエリアでErrorController.csでアクションDatabaseTimeoutを持っていないので、:(

  • 答えて

    0

    はおそらく、アプリケーションは404を返します。

    namespace MyWebApplication.Areas.Scheme.Controllers 
    { 
        public class ErrorController : Controller 
        { 
         public ActionResult DatabaseTimeout() 
         { 
          return View(); 
         } 
        } 
    } 
    

    あなたはエラーを表示するビューを作成する必要があります。 。​​下のプロジェクト内のユーザー、で

    他の質問 - >私はあなたがScheme領域の下HomeControllerでアクションIndex()へのリンクを作成したい場合は、ビューでこれを使用しなければならないと思います。

    @Html.ActionLink("Home", "Index", "Home", new { area = "Scheme" }, null) 
    
    +0

    私は行動定義を持っていますが、ノイズを発生させないように投稿しています。 –

    関連する問題