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

本文关键字:路由 工作 破折号 包含 模式 变量 如果 | 更新日期: 2023-09-27 18:16:20

我在控制器中有一个动作,它定义了以下路由:

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

如果itemSlug本身不包含破折号,它将工作并使用适当的参数命中动作,但如果它包含破折号,则不会命中路由。我不理解它,因为在我看来,正确的行为是离开其余的破折号并处理它们作为itemSlug的一部分,如果我将第一个破折号之前的部分约束为整数。

如何克服这个问题?我不想用不同的字符来分隔itemIditemSlug

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

这可能有帮助,从这里取答案


虽然你可以在配置文件

中尝试这些设置
<system.web>
     <httpRuntime requestPathInvalidCharacters="" requestValidationMode="2.0" />
     <pages validateRequest="false" />
</system.web>

我会避免在URL路径中使用'&'这样的字符,用下划线代替。