如果模式和变量都包含破折号,则路由不起作用

时间:2014-08-04 10:48:46

标签: c# asp.net-mvc routing asp.net-mvc-5.1

我在控制器中有一个动作,定义了以下路线。

[Route(@"mycontroller/myaction/{itemId:int}-{itemSlug}"]
public ActionResult MyAction(int itemId, string itemSlug) {
  ...
}

如果itemSlug本身不包含破折号,它可以使用适当的参数运行并执行操作,但如果确实如此,则路径不会被命中。我不赞成它,因为在我看来,正确的行为是留下其余的破折号并将其作为itemSlug的一部分处理,如果我将第一个破折号之前的部分约束为整数。

如何克服这个问题?我不想使用其他字符来分隔itemIditemSlug

1 个答案:

答案 0 :(得分:0)

这可能有所帮助,answer taken from here


虽然您可以在配置文件中尝试这些设置

<system.web>
     <httpRuntime requestPathInvalidCharacters="" requestValidationMode="2.0" />
     <pages validateRequest="false" />
</system.web>

我会避免使用像&#39;&amp;&#39;这样的字符。在URL路径中用下划线替换它们。