2010-07-20 29 views
1

我想創建一個網站,其中每個用戶都有自己的主頁,並且URL的格式爲site\username。我怎樣才能完成這與ASP.NET MVC路由系統?使用ASP.NET MVC的每個用戶的個性化網址

我打算後續URL佈局:

mysite的/ - >主頁
的mysite /帳號/註冊 - >帳號註冊頁面
的mysite/USER1 - > user1的主頁
的mysite /用戶2 - > user2的主頁

上面的網址將匹配以下controller\action模式:

mysite的/ - >主頁/指數
的mysite /帳號/註冊 - >帳戶/註冊
的mysite/USER1 - >用戶/指數
的mysite /用戶2 - >用戶/指數

如何我可以安排我的RegisterRoutes解決這個問題嗎?

回答

1

嘗試

routes.MapRoute(
    "User", 
    "{username}", 
    new { controller ="User", action="Index" } 
); 

編輯:那些擔心用戶惡意(或無意)通過使他們的用戶名是「帳戶」或類似的應該看看this link東西打破這種格式。

+0

我聞到危險。如果用戶選擇用戶名'帳戶'會怎麼樣? – BritishDeveloper 2010-07-20 23:00:26

2

而不是使用像mysite/user1這樣的路線,您可能需要使用類似mysite/users/user1的路線。然後將其映射到user/index操作並讓它傳遞最後一部分(用戶名)作爲該方法的參數。

使用mysite/{username}時出現的問題是,如果有人決定使用account或其他類似的用戶名?這可能會使他們的頁面無法查看。

+0

非常有效的擔心,但受保護的用戶名列表可能不會超過〜100左右,可以使枚舉來幫助驗證它。 – 2010-07-20 21:02:04