-1

を使用してASP.NET MVC3います。ルートを設定しようとしていますが、競合するルートがあるようです。誰かが私を正しい方向に向けることができることを期待して、それを修正する方法がわかりません。

私のウェブサイトには、アプリケーションを表示できるセクションが 2 つあります。Web サイトの通常のユーザーは、自分のアプリケーションのみを表示できます。また、管理者は、管理領域を使用してキャプチャされたすべてのアプリケーションを表示できます。

メモは、既存のアプリケーションに追加できます。メモは、アプリケーションのプロセス中にいつでも取得できる追加情報です。次のようなアプリケーション用に既にキャプチャされたすべてのメモを表示しようとしています。

/Application/1001/Notes
/Administration/Application/1001/Notes

これがルートの構成方法です。

Routes.MapRoute(
     "ApplicationNote",
     "{controller}/{applicationId}/Notes",
     new { controller = "Application", action = "Notes" },
     new { applicationId = @"\d+" },
     new[] { "MyProject.Web.Controllers" });

Routes.MapRoute(
     "AdminApplicationNote",
     "{area}/{controller}/{applicationId}/Notes",
     new { area = "Administration", controller = "Application", action = "Notes" },
     new { applicationId = @"\d+" },
     new[] { "MyProject.Web.Areas.Administration.Controllers" });

最初のリンク (データ テーブルの各アプリケーションの隣) を表示するには、各レコードのアクション リンクを生成するコントローラーに次のものを用意します。

string actionLinks = string.Empty;
actionLinks += "<a href=\"" + Url.Action("Notes", "Application", new { area = string.Empty, applicationId = application.Id }) + "\">" + "Notes</a>";

次のように表示する 2 番目のリンク (コントローラー アクションから、上記と同じ):

string actionLinks = string.Empty;
actionLinks = "<a href=\"" + Url.Action("Notes", new { applicationId = application.Id, area = "Administration", controller = "Application" }) + "\">" + "Notes</a>";

最初の構成はうまく機能します。

/Application/1001/Notes

...しかし、2番目はあまり良くありません。2 番目の構成のリンクにカーソルを合わせると、ステータスが次のように表示されます。

/Administration/Application/Notes?applicationId=1001

管理エリアのルート構成で何が間違っていますか?

4

1 に答える 1

0

制約領域を追加 = string.Empty

   routes.MapRoute(
        "ApplicationNote",
        "{controller}/{applicationId}/Notes",
        new { controller = "Application", action = "Notes" }, 
        new { applicationId = @"\d+", area = string.Empty }, //<----
        new[] { "MyProject.Web.Controllers" }
   );
于 2012-10-07T23:02:00.310 に答える