Lev*_*man 3 c# asp.net-mvc asp.net-mvc-routing asp.net-mvc-5
当前的ActionResult:
[Route("EvaluatorSetup/{evalYear}/{department}")]
public ActionResult RoutedEvaluatorSetup(int evalYear, string department)
{
return EvaluatorSetup((int?)evalYear, department);
}
Run Code Online (Sandbox Code Playgroud)
我想用url:
/EvaluatorSetup/2014/001.3244
Run Code Online (Sandbox Code Playgroud)
但是,{department}最终是一个字符串,路由不会将{department}作为字符串.
答:我不知道MVC对"001.3244"的期望是什么类型,或者它正在捡起它的类型.
B.我想将它维护为带有可选前导零的字符串,如示例中所示.
我究竟做错了什么?
更新:
我的意思是,当我在返回线上的代码中断时,它永远不会触发.
/EvaluatorSetup/2014/foobar (WORKS!)
/EvaluatorSetup/2014/001.3244 (DOESN'T WORK!)
Run Code Online (Sandbox Code Playgroud)
这让我相信我的路由不正确:
[Route("EvaluatorSetup/{evalYear}/{department}")]
Run Code Online (Sandbox Code Playgroud)
具体来说,似乎001.3244似乎不是有效的字符串.所以我的问题是如何纠正这个问题:
[Route("EvaluatorSetup/{evalYear}/{department}")]
public ActionResult RoutedEvaluatorSetup(int evalYear, string department)
Run Code Online (Sandbox Code Playgroud)
所以我可以进入一个uri:
/EvaluatorSetup/2014/001.3244
Run Code Online (Sandbox Code Playgroud)
优选地,保持前导零的位置.
我想过这样的事情:
[Route("EvaluatorSetup/{evalYear}/{corporation}.{department}")]
Run Code Online (Sandbox Code Playgroud)
然而,这是猜测.我甚至不知道这是否有效.
补充更新:
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})$" }
);
Run Code Online (Sandbox Code Playgroud)
use*_*220 14
问题出.在URL中.
默认情况下,如果.存在a ,则StaticFileHandler处理请求并查找与文件系统上的路径匹配的文件名.要覆盖此行为,您可以将处理程序分配给您尝试使用的URL.例如,将以下内容添加到web.config:
<system.webServer>
<handlers>
<add name="UrlRoutingHandler" path="/EvaluatorSetup/*" verb="GET" type="System.Web.Routing.UrlRoutingHandler" />
</handlers>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
将强制任何开始/EvaluatorSetup/使用的请求UrlRoutingHandler(与MVC路由关联的处理程序).
**解决方案补充**
当我将以下内容添加到web.config中的httpRuntime元素时,我发现此解决方案有效:
<system.web>
<httpRuntime relaxedUrlToFileSystemMapping="true" />
</system.web>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
755 次 |
| 最近记录: |