asp.net mvc maproute差别不大

时间:2013-07-28 09:06:59

标签: asp.net-mvc maproute

的结果有什么区别
routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{*id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

除了没有它,“*”做什么。

2 个答案:

答案 0 :(得分:4)

用星号标记id会将其标记为“全部捕获”参数,例如

/Content/List/1 --> id = "1"

/Content/List/My/Content --> id = "My/Content"

但是,使用以下路线:"{controller}/{action}/{id}"第二个网址根本不匹配。

有关MSDN上所有参数的更多信息:

  

要以这种方式处理其他细分,请标记最后一个细分   带星号(*)的参数。这被称为全能   参数。具有catch-all参数的路由也将匹配URL   不包含最后一个参数的任何值。下列   示例显示匹配未知数量的路由模式   段。查询/ {queryname} / {*} queryvalues

答案 1 :(得分:0)

here是一个类似的问题。第二个是让它用Catchall映射缓存。