自定义MapRoute与URL兼容字符

时间:2013-12-01 23:23:00

标签: c# asp.net-mvc-4 maproute

过去我已经完成了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,以便冒号表示法是可选的,默认为文章控制器。

1 个答案:

答案 0 :(得分:1)

将它放在默认路线上方。

路线按照添加顺序导航。因此,通过将此路由置于上面的默认路由,将首先针对URL测试它。如果失败,则测试下一条路线。

// Your route here

// Default route here

如果您需要它是可选的,那么您需要指定两条路线。将它们按照您希望它们进行检查的顺序排列,并确保您的默认路径保持在底部。然后,默认路由可以充当"后备"对于任何失败的事情。

您无法使用约束..无法解析可选的冒号字符。我的意思是......路由引擎无法推断出Controller和" name"来自" HomeGoldBishop"等字符串。然而,它可以从" Home:GoldBishop"中推断出来。你总是需要像默认路线一样重新开始。