【发布时间】:2010-11-22 19:39:07
【问题描述】:
如何映射 domain.com/username 之类的内容?问题是我认为 MVC 路由寻找控制器来确定它应该如何处理映射请求。
我对 ASP.NET MVC 还是很陌生。
但是,根据目前的教程,路由机制似乎相当僵化。
【问题讨论】:
标签: asp.net asp.net-mvc asp.net-mvc-routing
如何映射 domain.com/username 之类的内容?问题是我认为 MVC 路由寻找控制器来确定它应该如何处理映射请求。
我对 ASP.NET MVC 还是很陌生。
但是,根据目前的教程,路由机制似乎相当僵化。
【问题讨论】:
标签: asp.net asp.net-mvc asp.net-mvc-routing
它实际上非常灵活,我想你会发现它非常强大,需要更多的经验。以下是您可以做您想做的事的方法:
routes.MapRoute("MyRoute",
"{username}",
new { controller = "Home", action = "Index", username = "" });
这会选择一个默认控制器(“Home”)和一个默认操作方法(“Index”),并传递一个用户名参数(默认设置为“”)。
但请小心使用此路由,因为它几乎可以匹配您可以想象的任何 URL。它应该是您添加到映射中的最后一条路由,因此您的其他路由有机会首先访问该 URL。
【讨论】:
添加到 womp - 我会走这条路(双关语):
routes.MapRoute("MyRoute",
"user/{username}",
new { controller = "User", action = "Index", username = "" });
这会将网址映射到:domain.com/user/{username}
您可以随时将控制器和操作更改为您想要的任何内容。
【讨论】:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute("MyRoute",
"{id}",
new { controller = "Home", action = "User", id = "" });
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
如果我有类似的东西,那么我可以指向 mydomain.com/userid 以及 mydomain.com/home/index/1 之类的东西。但是,如果我只是访问 mydomain.com,它会转到用于 userid 的页面,这是有道理的,因为它与第一个路由规则匹配并认为 id 是“”,但是我该如何阻止这种行为呢?
【讨论】: