2014-01-20 160 views
1

我有一個用戶日誌表,並且想要提取記錄userId和日期時間參數。 如何創建路由的配置,這樣我的網址可以如:需要幫助來配置mvc路由

日誌/用戶名/

日誌/用戶名/年/

日誌/用戶名/年/月/

日誌/用戶名/年/月/日/

和我這樣的操作方法:

[HttpGet] 
public ActionResult Read(int? userId, int? year, int? month, int? day) 
{ 

} 

必要的我不想只有一個路由,如果他們是一個解決方案,我讚賞它的一些路線,但我希望我的行動方法的語法可能如上所述如果可能的話。 謝謝。

+0

提供用戶名和一個月的時候,會發生什麼,但不是一年或一天?你的網址是什麼樣子? – danludwig

+0

如果提供月份,用戶ID和年份不能省略。如果提供了一天,則必須提供所有其他參數。這是一個搜索視圖。我希望它靈活。 –

+0

這樣做有什麼問題:routes.MapRoute( name:「Logs」, url:「logs/{user}/{year}/{month}/{day}」, 默認值:new {controller =「Logs 「,action =」Details「,user = UrlParameter.Optional,year = UrlParameter.Optional,month = UrlParameter.Optional,day = UrlParameter.Optional} ); – ganders

回答

0

只有路徑中的最後一個參數可以是可選的。我建議你做你的路線是這樣的:

Logs/{userid} 

...和使用查詢字符串的其餘參數。

Logs/{userid}?year=2014&month=1&day=20 

或者,你可以在整個日期通過一個可選的字符串,然後解析它在行動:

Logs/{userId}/{date?} 
Logs/{userId}/2014 
Logs/{userId}/2014-01 
Logs/{userId}/2014-01-20 

[HttpGet] 
public ActionResult Read(int userId, string date = null) 
{ 

} 
+0

謝謝你的簡單和優雅的解決方案 –