私はASP.NET MVCアプリケーションを開発しています。表示されたコンテンツ MVCが特定のアクションを表示できません
のために私がいない - エラー
- スキーム:コンテンツは、いくつかの領域に分割されエリアに割り当てられていないコントローラがある。
エリア名を入力せずに
Pages
コントローラにアクセスしたい場合は、ルートのエリア名でアクセスする必要があります。だから私は
host/Administration/Users
下
Administration
ページでアクションUsers
を表示したいと私はhost/Scheme/Error/DatabaseTimeout
下Error
コントローラから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を持っていないので、:(
私は行動定義を持っていますが、ノイズを発生させないように投稿しています。 –