在单轨列车中,我正在尝试创建一个网址重写规则,以便为文章帖子提供友好的网址。这是网址的样子:
http://domain.com/2010/11/29/Winter-snow-warning
这是global.asax.cs中的代码,用于重写网址:
RoutingModuleEx.Engine.Add(
new PatternRoute("/<year>/<month>/<day>/<title>")
.DefaultForController().Is("post")
.DefaultForAction().Is("show")
.Restrict("year").ValidInteger
.Restrict("month").ValidInteger
.Restrict("day").ValidInteger
);
这很有效,但是如果网址中有感叹号:
http://domain.com/2010/11/29/Winter-snow-warning !!
然后它与重写规则和错误不匹配,说无法找到控制器“2010”。我在这里想念的是,这是单轨列车中的一个错误吗?
答案 0 :(得分:0)
Monorail路由的默认匹配机制可能不接受感叹号,因此路由不匹配,而是默认/controller/action
规则匹配,因为没有2010控制器而失败。
快速解决方法可能是将标题限制为符合您需求的精确表达式。例如:.Restring("title").ValidRegex("[-_.+!*'() a-zA-Z0-9]+]")