【发布时间】:2012-11-26 04:11:57
【问题描述】:
我想为我的用户提供一个个性化网址,例如:
www.foo.com/sergio
我需要创建什么样的路线?
假设我有以下控制器和操作,如何将虚 URL 映射到该控制器?
public ActionResult Profile(string username)
{
var model = LoadProfile(username);
return View(model);
}
这是我尝试过的以及发生了什么:
选项 A:
每个 url 都被这个路由捕获,这意味着我输入的每个 URL 都将我引导到 Account 控制器,而不仅仅是 foo.com/[USERNAME]。不好。
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Profile",
"{username}",
new { controller = "Account", action = "Profile", username = UrlParameter.Optional }
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
选项 B:
默认路由运行良好,但在尝试访问配置文件 foo.com/[USERNAME] 时,我收到 HTTP 404 错误。
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(
"DentistProfile",
"{username}",
new { controller = "Account", action = "Profile", username = UrlParameter.Optional }
);
}
【问题讨论】:
标签: asp.net-mvc-3 routes vanity-url