まず、ルーティングルール
1、あなたはルールに複数のルートを作成することができ、各ルートのname属性は同じではありません
図2に示すように、ルーティングルールが優先され、最優先ルーティングルールより高いです
RouteConfig.cs:App_Start下のファイル
1 公共 静的 ボイドRegisterRoutes(RouteCollectionルート) 2 { 3 routes.IgnoreRoute(" {リソース} .axd / {*}パス情報" )。 4 5 routes.MapRoute( 6 名:" Default2 " 、 7 URL:" {コントローラ} - {アクション} " 、 8 デフォルト:新しい {コントローラ= " HomeDemo "、ACTION = " インデックス" } 9 )。 10 11 routes.MapRoute( 12 名:" デフォルト" 、 13 URL:" {コントローラ} / {アクション} / {ID} " 、 14 デフォルト:新しい {コントローラ= " HomeDemo "、ACTION = " インデックス"、ID = UrlParameter .Optional} 15 )。 16 } 17 }
第二に、ルーティングデバッグツール
不適切な登録のために我々のアプリケーションのための複数の経路を登録すると、あなたは望ましい結果を得ることができません。なぜこれがルートを行く、特定の要求が起こるのでしょうか?ヒーローRegisterRoutesを回し、この時間。
最初のステップ:最初のダウンロードのDLLライブラリ、私はBaiduのクラウドディスクのダウンロードに行きませんでした
リンクします。https://pan.baidu.com/s/1jJ1W88cOuTrdooLySnGVSg
抽出コード:097u
第二工程:パッケージの導入:RouteDebug
第三ステップ:テストパスをオーバーライドするのGlobal.asax
1 public class MvcApplication : System.Web.HttpApplication 2 { 3 protected void Application_Start() 4 { 5 AreaRegistration.RegisterAllAreas(); 6 FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 7 RouteConfig.RegisterRoutes(RouteTable.Routes); 8 BundleConfig.RegisterBundles(BundleTable.Bundles); 9 10 RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes); //重写测试路径 11 } 12 }
第四步:运行网站,进行分析路由规则
搞定!~~
三、路由的约束
1 public class RouteConfig 2 { 3 public static void RegisterRoutes(RouteCollection routes) 4 { 5 routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 6 7 routes.MapRoute( 8 name: "Default2", 9 url: "{controller}-{action}", 10 defaults: new { controller = "HomeDemo", action = "Index" }, 11 constraints:new {Controller=@"^\d+$" }, //控制器约束 12 namespaces:new string[] { "MVCDemo2.Controllers" } //命名空间约束 13 ); 14 15 routes.MapRoute( 16 name: "Default", 17 url: "{controller}/{action}/{id}", 18 defaults: new { controller = "HomeDemo", action = "Index", id = UrlParameter.Optional } 19 ); 20 } 21 }