2014-12-02 62 views
0

我是新来asp.net和正在学习的URL路由URL路由,如Facebook asp.net

在Facebook的链接(https://www.facebook.com/james.wood)怎么做james.wood工作?

我试图通过使用此代码添加在做在我的asp.net同样的事情,我的全球

route.MapPageRoute("Profile", "epubtest/profile/{profileid}", "~/epubtest/Profile.aspx"); 

,但我不能使它与工作就像james.wood

是否点手段另一个参数还是只有一个参数?

它的工作原理没有点上它只是一个字

+1

当你用点测试时会发生什么? – haim770 2014-12-02 16:48:35

+0

@ haim770它将注册为一个新页面。并且我得到了'HTTP错误404.0 - 未找到' – 2014-12-02 16:49:08

+0

它可能将'.wood'看作是一个扩展 – DGibbs 2014-12-02 16:50:04

回答

0

1)您可以添加这条路线:

routes.MapRoute(
    name: "User", 
    url: "{username}", 
    defaults: new { controller = "Destiny", action = "Index" }, 
    constraints: new { username = new UserNameConstraint() } 
); 

2)创建这个类:

public class UserNameConstraint : IRouteConstraint 
{ 
    public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection) 
    { 
     List<string> users = new List<string>() { "username1", "username2" }; 

     var username = values["username"].ToString().ToLower(); 

     return users.Any(x => x.ToLower() == username); 
    } 
} 

3)DestinyController

public class DestinyController : Controller 
{ 
    public ActionResult Index(string username) 
    { 
     return View(); 
    } 
} 

我h我帮助过。 拥抱!