2017-04-09 3 views
1

アクションとしてインデックスを指定すると、@ Url.Actionがインデックスを出力しないのはなぜですか?ActionとしてIndexを指定すると、@ Url.ActionがIndexを出力しないのはなぜですか?

razor @ Url.Action( "Index"、 "Admin")を使用してURLを出力しようとしていますが、出力はhttp://localhost/Adminです。その結果、ルーティングは/ Adminがカテゴリであり、間違ったルートによって捕捉されたと思っています。

私が使用していたルートは

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 


     routes.MapRoute(
      null, 
      "Page{page}", 
      new { Controller = "Photo", action="List" , category = (string)null }, 
      new { page = @"\d+" } 
     ); 


     routes.MapRoute(
      null, 
      "{category}", 
      new { Controller = "Photo", action = "List", page=1 } 
     ); 


     routes.MapRoute(
      null, 
      "{category}/Page{page}", 
      new { Controller = "Photo", action = "List"}, 
      new { page = @"\d+" } 
     ); 


     // Default MVC route (fallback) 
     routes.MapRoute(
      "Default", // Route name 
      "{controller}/{action}/{id}", // URL with parameters 
      new { controller = "App", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
     ); 

     routes.MapRoute(null, "{controller}/{action}"); 
    } 

答えて

3

それはURLにあり、まだ表示したい場合はindexになります。ルートの順序を

に変更します。
routes.MapRoute(null, "{controller}/{action}"); 


routes.MapRoute(
      "Default", // Route name 
      "{controller}/{action}/{id}", // URL with parameters 
      new { controller = "App", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
     ); 
0

私は2つの新しいルートを追加することによって、問題を修正しています。 action urlが作成されたときに、あなたのアクションがdefaultアクションと同じであるので、それは書き込みを無視するように、あなたのルートがAdmin/{action}になりますので、これが原因で、あなたのデフォルトルートの

routes.MapRoute(
      "Default", // Route name 
      "{controller}/{action}/{id}", // URL with parameters 
      new { controller = "App", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
     ); 

それはあなたのdefaultルートが表示されますされ

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 


     routes.MapRoute(
      "AdminIndex",           // Route name 
      "Admin",       // URL with parameters 
      new { controller = "Admin", action = "Index" } // Parameter defaults 
     ); 
     routes.MapRoute(
      "Admin",           // Route name 
      "Admin/Page{page}",       // URL with parameters 
      new { controller = "Admin", action = "Index" } // Parameter defaults 
     ); 


     routes.MapRoute(
      null, 
      "Page{page}", 
      new { Controller = "Photo", action="List" , category = (string)null }, 
      new { page = @"\d+" } 
     ); 

     routes.MapRoute(
      null, 
      "{category}", 
      new { Controller = "Photo", action = "List", page=1 } 
     ); 


     routes.MapRoute(
      null, 
      "{category}/Page{page}", 
      new { Controller = "Photo", action = "List"}, 
      new { page = @"\d+" } 
     ); 


     //Default MVC route(fallback) 
     routes.MapRoute(
      "Default", // Route name 
      "{controller}/{action}/{id}", // URL with parameters 
      new { controller = "App", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
     ); 

     routes.MapRoute(null, "{controller}/{action}"); 
    } 
関連する問題