如果模式和变量都包含破折号,则路由不工作
本文关键字:路由 工作 破折号 包含 模式 变量 如果 | 更新日期: 2023-09-27 18:16:20
我在控制器中有一个动作,它定义了以下路由:
[Route(@"mycontroller/myaction/{itemId:int}-{itemSlug}"]
public ActionResult MyAction(int itemId, string itemSlug) {
...
}
如果itemSlug
本身不包含破折号,它将工作并使用适当的参数命中动作,但如果它包含破折号,则不会命中路由。我不理解它,因为在我看来,正确的行为是离开其余的破折号并处理它们作为itemSlug
的一部分,如果我将第一个破折号之前的部分约束为整数。
如何克服这个问题?我不想用不同的字符来分隔itemId
和itemSlug
这可能有帮助,从这里取答案
虽然你可以在配置文件
中尝试这些设置<system.web>
<httpRuntime requestPathInvalidCharacters="" requestValidationMode="2.0" />
<pages validateRequest="false" />
</system.web>
我会避免在URL路径中使用'&'这样的字符,用下划线代替。