2014-01-20 119 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

谢谢你的简单和优雅的解决方案 –