我有一个配置文件网站,现在我想让它很容易记住的URL。asp.net中的路由区域mvc
我有一个像
- www.page.com/faq链接
- www.page.com/news/1
- www.page.com/rules
- www.page。 com/profile/[USERNAME]
现在,我想将网址www.page.com/profile/[USERNAME]更改为www.page.com/[USERNAME]。该配置文件是我项目中的一个自己的区域。
我ProfileAreaRegistration.cs
public override string AreaName => "Profile";
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Profile_media",
"Profile/{ProfileName}/Media/{id}",
new
{
area = "Profile",
controller = "Media",
action = "Index"
},
new[] { "MySite.Areas.Profile.Controllers" });
context.MapRoute(
"Profile_default",
"Profile/{ProfileName}/{controller}/{action}/{id}",
new
{
area = "Profile",
controller = "Home",
action = "Index",
id = UrlParameter.Optional
},
new[] { "MySite.Areas.Profile.Controllers" });
}
我RouteConfig.cs
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"News", // Route name
"News/{id}", // URL with parameters
new {controller = "News", action = "Index", id = UrlParameter.Optional},
new[] {"MySite.Controllers.News"}
);
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new {controller = "Home", action = "Index", id = UrlParameter.Optional},
new[] {"MySite.Controllers"}
);
}
我怎样才能www.page.com/rules和www.page.com/[USERNAME]工作?当我输入www.page.com/[USERNAME]时,应调用区域配置文件。
由于[用户名]可以是任意的字符串值,你需要确保配置文件路径是要添加到路由表中的最后一个,防止劫持您所有的预先设定好的路线。但是你仍然需要怀疑你是否真的希望[USERNAME]成为顶级目录类型的路线。如果某人拥有'faq'或'rules'作为用户名呢?这可能会导致你的路线很多冲突... –
谢谢。是的,如果用户名是常见问题或规则,可能会出现问题。当用户创建帐户或者我可以更改地址时,我可以通过用户名保护常见问题和规则,www.page.com/faq - > www.page.com/start/faq。但现在,我应该从哪里开始将www.page.com/[USERNAME]发送到www.page.com/Profile/[USERNAME]区域 – mrcode