0

在单轨列车中,我正在尝试创建一个 url 重写规则,以便为文章帖子提供友好的 url。网址如下所示:

http://domain.com/2010/11/29/Winter-snow-warning

这是 global.asax.cs 中用于重写 url 的代码:

RoutingModuleEx.Engine.Add(
                new PatternRoute("/<year>/<month>/<day>/<title>")
                    .DefaultForController().Is("post")
                    .DefaultForAction().Is("show")
                    .Restrict("year").ValidInteger
                    .Restrict("month").ValidInteger
                    .Restrict("day").ValidInteger
            );

这很好用,但是如果 url 中有感叹号:

http://domain.com/2010/11/29/Winter-snow-warning!!

然后它与重写规则不匹配并出错,说找不到控制器“2010”。我在这里错过了什么,这是单轨铁路中的错误吗?

4

1 回答 1

0

可能单轨路由的默认匹配机制是不接受感叹号,所以路由不匹配,而是匹配默认/controller/action规则,失败,因为没有2010控制器存在。

一个快速的解决方法可能是将标题限制为适合您需要的确切表达式。例如:.Restring("title").ValidRegex("[-_.+!*'() a-zA-Z0-9]+]")

于 2010-12-06T06:31:52.163 回答