2010-12-13 198 views
0

我想在我的应用程序中创建自定义路由。ASP.NET MVC自定义路由

我在全球ASAX文件添加一条新的路径:

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

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

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

它工作正常,当我使用UserProfileController:

http://localhost:7738/UserProfile/Info/chopin

但默认路由是行不通的!

我看到这个http://localhost:7738/Blog/Info?id=2代替本http://localhost:7738/Blog/Info/2

任何人都可以帮我吗?

谢谢l。

+0

本地主机?当真? – bevacqua 2010-12-13 17:01:42

+0

@Nico你试过这些链接?当真? – dotjoe 2010-12-13 17:22:46

回答

2

也许你可以固定路线:

routes.MapRoute(
     "Profile",           // Route name 
     "UserProfile/{action}/{userName}",       // URL with parameters 
     new { action = "Index", userName = UrlParameter.Optional } // Parameter defaults 
    ); 
1

你的路线本质上是一样的!

如何获取查询字符串的URI?

+0

+1,'{controller}/{action}/{userName}'和'{controller}/{action}/{id}'在功能上是完全相同的。 – 2010-12-13 17:19:53

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

    routes.MapRoute(
    "UserProfile", 
    "UserProfile/{action}/{userName}", 
    new { contoller = "UserProfile", action = "Index", userName = UrlParameter.Optional } 
); 

    routes.MapRoute(
    "Default", 
    "{controller}/{action}/{id}", 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 
}