过去我已经完成了MediaWiki的开发,并且很有兴趣创建一个类似于Wiki格式的路由{namespace}:{article}
。
在测试我的创建过程中,但遇到了URL模式的问题。
routes.MapRoute(
name: "Generic" ,
url: "{controller}:{name}" ,
defaults: new {
controller = "Article" ,
action = "View" ,
name = "Home"
} ,
constraints = new {
name = @"^[\w]+$"
}
);
目前问题是冒号:
。为了让url以我需要的方式工作,我必须在url中使用冒号来解析它。
这个MapRoute也是我到目前为止唯一的路线。
想知道我应该如何为MVC创建MapRoute,以便冒号表示法是可选的,默认为文章控制器。
答案 0 :(得分:1)
将它放在默认路线上方。
路线按照添加顺序导航。因此,通过将此路由置于上面的默认路由,将首先针对URL测试它。如果失败,则测试下一条路线。
// Your route here
// Default route here
如果您需要它是可选的,那么您需要指定两条路线。将它们按照您希望它们进行检查的顺序排列,并确保您的默认路径保持在底部。然后,默认路由可以充当"后备"对于任何失败的事情。
您无法使用约束..无法解析可选的冒号字符。我的意思是......路由引擎无法推断出Controller和" name"来自" HomeGoldBishop
"等字符串。然而,它可以从" Home:GoldBishop
"中推断出来。你总是需要像默认路线一样重新开始。