2

结果之间有什么区别

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 }
        );

除了没有它之外,“*”还有什么作用。

4

2 回答 2

4

用星号标记id会将其标记为“包罗万象”参数,例如

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

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

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

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

要以这种方式处理其他段,请用星号 (*) 标记最后一个参数。这被称为包罗万象的参数。带有 catch-all 参数的路由也将匹配最后一个参数不包含任何值的 URL。以下示例显示了与未知数量的段匹配的路线模式。查询/{查询名称}/{*查询值}

于 2013-07-28T09:10:46.230 回答
0

是一个类似的问题。第二个只是使它与 Catchall 映射一起缓存。

于 2013-07-28T09:14:59.077 回答