c# – 具有多个前导零小数的属性路由
当前的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: <system.webServer> <handlers> <add name="UrlRoutingHandler" path="/EvaluatorSetup/*" verb="GET" type="System.Web.Routing.UrlRoutingHandler" /> </handlers> </system.webServer> 将强制以/ EvaluatorSetup /开头的任何请求使用UrlRoutingHandler(与MVC路由关联的处理程序). **解决方案补充** 当我将以下内容添加到web.config中的httpRuntime元素时,我发现此解决方案有效: <system.web> <httpRuntime relaxedUrlToFileSystemMapping="true" /> </system.web> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |