2017-04-09 21 views
1

爲什麼當您將Index指定爲操作時,@ Url.Action不會輸出索引?爲什麼當您將Index指定爲操作時,@ Url.Action不會輸出索引?

我想用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

這是因爲你的默認路由的

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

在創建action url它會看到你的default路線,以便您的路線將是Admin/{action}因爲你的動作是一樣的default行動,因此會忽略寫作它在網址,如果你仍然想要顯示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

我通過增加兩條新航線固定的問題。

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}"); 
    } 
相關問題