【发布时间】:2010-12-31 14:25:36
【问题描述】:
我有刚刚添加的这条路线
routes.MapRoute(
"MyRoute",
"MyController/{action}/{orgId}/{startDate}/{endDate}",
new
{
controller = "MyController",
action = "MyAction",
orgId = 0,
startDate = DateTime.Today.AddMonths(-1),
endDate = DateTime.Today
},
new
{
action = new FromValuesListConstraint(new string[] { "MyAction", "MyActionEx" }),
orgId = new IntegerRouteConstraint(),
startDate = new DateTimeRouteConstraint(),
endDate = new DateTimeRouteConstraint()
}
当我输入这个 url 时,它会解析为默认路由(控制器、操作、id),并且上面的 rout 不会捕获这个 url:
http://localhost:1713/MyController/MyAction/16
但这下面的工作正常。
http://localhost:1713/MyController/MyAction/16/11-May-10/11-May-10
我的问题是我认为两者都可以工作,因为我为 startDate 和 enddate 字段提供默认值
我使用the RouteDebugger 对此进行了测试,这条路线出现了错误
我怎样才能将最后两个参数作为可选参数但仍然有验证?
【问题讨论】:
-
路由的顺序很重要。这是在默认路由之前还是之后?
-
@Aliostad - 它高于文件中的默认路由(我不确定那是之前还是之后)。并且路由调试器将其解析为 FALSE,因此即使顺序颠倒,它仍然找不到匹配项
-
我是这么认为的。您的格式目前需要由 5 部分组成的 URL。看我的回复。