的结果有什么区别
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 }
);
除了没有它,“*”做什么。
答案 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映射缓存。