Asp.net mvc asp.net mvc中类似Twitter的url路由?

Asp.net mvc asp.net mvc中类似Twitter的url路由?,asp.net-mvc,twitter,url-routing,Asp.net Mvc,Twitter,Url Routing,我在twitter上看到过,我只需输入url,比如说http://twitter.com/pandiyachendur。如何使用asp.net mvc实现同样的功能?我不知道twitter是怎么做到的 我想象他们有一些常规异常,检查请求是否与可能是用户配置文件的内容匹配,然后将该请求推送到适当的控制器操作 他们可能会首先列出所有的异常都是静态路由,比如“/邀请”,然后将所有其他内容传递给一个默认的控制器操作,该操作将尝试显示用户页面。我想他们会有一些常规异常,检查请求是否与可能是用户配置文件的内

我在twitter上看到过,我只需输入url,比如说
http://twitter.com/pandiyachendur
。如何使用asp.net mvc实现同样的功能?我不知道twitter是怎么做到的

我想象他们有一些常规异常,检查请求是否与可能是用户配置文件的内容匹配,然后将该请求推送到适当的控制器操作


他们可能会首先列出所有的异常都是静态路由,比如“/邀请”,然后将所有其他内容传递给一个默认的控制器操作,该操作将尝试显示用户页面。

我想他们会有一些常规异常,检查请求是否与可能是用户配置文件的内容匹配,然后将该请求推送到相应的控制器操作


他们可能会首先列出所有的异常都是静态路由,如“/邀请”,然后将所有其他内容传递给试图显示用户页面的默认控制器操作。

您需要注意声明路由的顺序。由于
/{username}
URL没有公共元素,因此需要将其声明为所有特定路由之后的最后一个“全面捕获”路由

RouteTable.Routes.MapRoute(null, "LogIn", new { controller = "Account", action = "LogIn" });
RouteTable.Routes.MapRoute(null, "LogOut", new { controller = "Account", action = "LogOut" });
// ... other routes go here ...

// Final catch-all route to map /{username} to the Account.Details action.
RouteTable.Routes.MapRoute(null, "{id}", new { controller = "Account", action = "Details" });

还值得记住的是,您需要扩展对用户名的验证,以防止人们选择与特定路由(例如登录)冲突的名称。

您需要注意声明路由的顺序。由于
/{username}
URL没有公共元素,因此需要将其声明为所有特定路由之后的最后一个“全面捕获”路由

RouteTable.Routes.MapRoute(null, "LogIn", new { controller = "Account", action = "LogIn" });
RouteTable.Routes.MapRoute(null, "LogOut", new { controller = "Account", action = "LogOut" });
// ... other routes go here ...

// Final catch-all route to map /{username} to the Account.Details action.
RouteTable.Routes.MapRoute(null, "{id}", new { controller = "Account", action = "Details" });

还值得记住的是,您需要扩展对用户名的验证,以防止人们选择与特定路由(例如登录)冲突的名称。

+1-并验证您可能需要的任何未来URL。。。危险区域,如果你问我的话。我同意,与此相关的维护成本很高。好的方面是,在验证失败的情况下,只有存在路由冲突的用户才会出现问题。应用程序将继续为非冲突用户运行。如果你能想出一个更好的方法来实现所需的路由,请分享。+1-并验证你将来可能想要的任何URL。。。危险区域,如果你问我的话。我同意,与此相关的维护成本很高。好的方面是,在验证失败的情况下,只有存在路由冲突的用户才会出现问题。应用程序将继续为非冲突用户运行。如果您能想出更好的方法来实现所需的路由,请分享。