2017-06-01 16 views
1

私は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ルートに対応していると確信していますが、明らかに間違っています。どのようにすれば、ルート内のコントローラを適切に制限できますか?

答えて

0

SiteSettings_Controllerのコードベースを検索すると他の場所に表示されますか?

私はちょうどそれをテストしたとき以下のコードは確かに私のために働いた。

using System; 
using System.Web.Mvc; 

namespace WebApplication1.Areas.SiteSettings 
{ 
    public class SiteSettingsAreaRegistration : AreaRegistration 
    { 
     public override string AreaName 
     { 
      get 
      { 
       return "SiteSettings"; 
      } 
     } 

     public override void RegisterArea(AreaRegistrationContext context) 
     { 
      context.MapRoute(
       name: "SiteSettings_Controller", 
       url: "SiteSettings/{controller}/{action}/{id}", 
       defaults: new 
       { 
        action = "Index", 
        id = UrlParameter.Optional 
       }, 
      constraints: new { controller = "UserManagement|Tools|Settings" } 
      ); 
     } 
    } 
} 
関連する問題