私はASP.NET MVCアプリケーションを持っています。私はそのルートを設定したいと思います。ここに私のRouteConfigのコードはあります:経路の制約
public static void Register(RouteCollection routes, bool useAttributes = true)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("favicon.ico");
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
このルートはうまくいきます。私のアプリケーションにはエリアがあり、そのルートも設定しようとしています。私はSiteSettingsAreaのルートでコントローラーを制限したい
public override void RegisterArea(AreaRegistrationContext context)
{
try
{
context.MapRoute(
name: "SiteSettings_Controller",
url: "SiteSettings/{controller}/{action}/{id}",
defaults: new {action = "Index", id = UrlParameter.Optional,
// here I tried to use @"(UserManagement|Tools|Settings)"
//as constraint but it takes no effect
constraints: new {controller = "UserManagement|Tools|Settings" }
);
}
catch (Exception e)
{
// here I get InvalidOperationException ""
}
}
が、私は「localhost /をSiteSettings/UserManagement」のURLに移動するとき、私は、ルートテーブルにNoルートは一致しません」というメッセージとInvalidOperationExceptionが出ます:それは私のエリアの登録コードです供給された値 "である。私はこのURLがSiteSettings_Controllerルートに対応していると確信していますが、明らかに間違っています。どのようにすれば、ルート内のコントローラを適切に制限できますか?