https://msdn.microsoft.com/zh-tw/library/dd504958(v=vs.108).aspx
你传了三个参数,第三个参数对应的是default,第四个才是constraints

解决方案 »

  1.   

    其实是这样的URL
    movies/movies/Listdycountries/香港/1
    Movies/Movies/Play/8743/1
      

  2.   


     // 约束 Movies/ListDyCountries/中文/1
                routes.MapRoute(
                    "Movies_list",
                    "Movies/{controller}/{action}/{parma}/{id}",
                    new { controller = "", action = "" },
                    new { parma = @"\D+", id = @"\d+" }
                );            // 约束 Movies/Play/15580/1
                routes.MapRoute(
                   "Movies_play",
                   "Movies/{controller}/{action}/{id}/{part}",
                   new { controller = "", action = "play" },
                   new { id = @"\d+", part = @"\d+" }
               );
      

  3.   

     //这里有两个路由          
     
                // 约束 Movies/ListDyCountries/中文/1
                context.MapRoute(
                    "Movies_list",
                    "Movies/{controller}/{action}/{parma}/{id}",
                    new { controller = "", action = "ListDyCountries", parma = @"\D+", id = @"\d+" }
                );
     
                // 约束 Movies/Play/15580/1
                context.MapRoute(
                   "Movies_play",
                   "Movies/{controller}/{action}/{id}/{part}",
                   new { controller = "", action = "play", id = @"\d+", part = @"\d+" }
               );
     
                //实际运行后,输入"Movies/ListDyCountries/中文/1" 可转到正确的动作上,
                // 可当输入 "Movies/Play/15580/1" 这样 URL时会转到ListDyCountries这个动作上
                // 就是说都会转到一条的规则上。可我明明把第一条的第一个参数设置成非数字约束,第二条的第一个参数设置成数字约束了的