2010-11-03 150 views
1

我對MVC路由感到困惑。假設我有這個域名:poopoopants.com。我想一些標準的網址,關閉根說去一個「關於」頁面或「聯繫方式」頁面:動態ASP.NET MVC路由

http://poopoopants.com/about 
http://poopoopants.com/contact 

現在,我也將有下面這兩條路的無限量,其中「[用戶]」是用戶名,用於與poopoopants.com帳戶註冊的人,和[文件路徑]的變量是一個網址的sanitize文件路徑可含有/字符

http://poopoopants.com/[user] 
http://poopoopants.com/[user]/[file-path] 

所以我假設我會有一個IndexControllerIndex行動/,About a​​,Contact動作爲/contact,一個爲UserControllerIndex動作爲/[user]/File動作爲/[user]/[file-path]

我的問題涉及到Global.asax.cs中的路線。到目前爲止,我已經有了:

routes.MapRoute("Index", "/", new { controller = "Index", action = "Index" }); 
routes.MapRoute("About", "/about", new { controller = "Index", action = "About" }); 
routes.MapRoute("Contact", "/contact", new { controller = "Index", action = "Contact" }); 

但是我指定/ [用戶]和/ [用戶]/[文件路徑]路線,以及他們在UserController行動的相應方法簽名?

回答

2

我沒有測試,但它應該工作:

路線:

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

routes.MapRoute(
    "File", 
    "{username}/{filepath}", 
    new { controller = "User", action = "File" } 

方法簽名:

public ActionResult Index(string username); 
public ActionResult File(string username, string filepath); 

此外,您還可以讓你的指數控制器路線可能是在一個MapRoute子句。

有用的工具:http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx

+1

我不得不改變URL參數「文件」路線「{用戶名}/{*}文件路徑」支持文件路徑以「/」在其中,但工作perfectly- -謝謝! – SnickersAreMyFave 2010-11-03 18:24:55

+0

嗯,我沒有看到我可以如何爲聯繫人和關於一條路由,因爲用戶路由將捕獲任何未明確定義的路由,對吧? – SnickersAreMyFave 2010-11-03 18:26:30

+0

是的,我錯了。快速測試證明;)很高興我可以幫助你,與你的項目祝你好運。 – mlusiak 2010-11-03 21:43:16