具有多个前导零小数的属性路由

当前的ActionResult:

[Route("EvaluatorSetup/{evalYear}/{department}")] public ActionResult RoutedEvaluatorSetup(int evalYear, string department) { return EvaluatorSetup((int?)evalYear, department); } 

我想用url:

 /EvaluatorSetup/2014/001.3244 

但是,{department}最终是一个字符串,路由不会将{department}作为字符串。

答:我不知道MVC对“001.3244”的期望是什么类型,或者它正在捡起它的类型。

B.我想将它维护为带有可选前导零的字符串,如示例中所示。

我究竟做错了什么?

更新:

我的意思是,当我在返回线上的代码中断时,它永远不会触发。

 /EvaluatorSetup/2014/foobar (WORKS!) /EvaluatorSetup/2014/001.3244 (DOESN'T WORK!) 

这让我相信我的路由不正确:

 [Route("EvaluatorSetup/{evalYear}/{department}")] 

具体来说,似乎001.3244不是有效的字符串。 所以我的问题是如何纠正这个问题:

 [Route("EvaluatorSetup/{evalYear}/{department}")] public ActionResult RoutedEvaluatorSetup(int evalYear, string department) 

所以我可以进入一个uri:

 /EvaluatorSetup/2014/001.3244 

优选地,保持前导零的位置。

我想过这样的事情:

 [Route("EvaluatorSetup/{evalYear}/{corporation}.{department}")] 

然而,这是猜测。 我甚至不知道这是否有效。

其他更新:

RouteConfig.cs中的旧路由(似乎不再起作用)是这样的:

 routes.MapRoute( "evaluations_evaluatorsetupget", "evaluations/evaluatorsetup/{evalyear}/{department}", new { controller = "evaluations", action = "evaluatorsetup", evalyear = @"^(\d{4})$", department = @"^(\d{3}\.\d{4})$" }, new { evalyear = @"^(\d{4})$", department = @"^(\d{3}\.\d{4})$" } ); 

问题是. 在URL中。

默认情况下,如果是. 存在StaticFileHandler处理请求并查找与文件系统上的路径匹配的文件名。 要覆盖此行为,您可以将处理程序分配给您尝试使用的URL。 例如,将以下内容添加到web.config:

      

将强制以/EvaluatorSetup/开头的任何请求使用UrlRoutingHandler (与MVC路由关联的处理程序)。

**解决方案补充**

当我将以下内容添加到web.config中的httpRuntime元素时,我发现此解决方案有效:

    

尝试

 [Route("EvaluatorSetup/{evalYear}/{department:string}")] 

我相信默认是int