私はプロフィールサイトを持っていますので、私はその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/ [ユーザ名]をwww.page.com/ [ユーザ名]に変更します。プロフィールは私のプロジェクトの自分のエリアです。
マイ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/[USERNAME] www.page.com/rulesの作業どのように私は得ることができますか? www.page.com/-USERNAMEを入力すると、エリアプロファイルを呼び出す必要があります。
を[USERNAME]は任意の文字列値を指定できますので、あなたがプロファイルルートがルーティングテーブルに追加された最後のものであることを確認する必要があり、すべてのあなたのprefedinedルートをハイジャックするのを防ぐために。しかし、[USERNAME]がトップレベルのディレクトリの種類のルートになることを本当に望んでいるかどうか疑問に思う必要があります。誰かが 'faq'や' rules'をユーザ名として持っているとどうなりますか?それはあなたのルートに紛争の多くを引き起こす可能性があります... –
ありがとう。はい、ユーザー名がfaqかルールの場合は問題になる可能性があります。ユーザーがアカウントを作成したとき、またはアドレスを変更できるときに、私はいつもユーザー名からfaqとルールを保護することができます.www.page.com/faq - > www.page.com/start/faqしかし、今のところ、www.page.com/-USERNAMEをどこに送る必要がありますか?www.fage.com/Profile/-USERNAME] – mrcode