当RouteConfig.cs中的代码是:
routes.MapRoute( name: "Default1", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id =UrlParameter.Optional } );
代码@Html.ActionLink("仓库","Index","Repository")生成的链接是:
http://localhost:5560/Repository
当RouteConfig.cs中的代码是:
routes.MapRoute( name: "Default1", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id =String.Empty } );
代码@Html.ActionLink("仓库","Index","Repository")生成的链接是:
http://localhost:5560/Repository/Index
问题:
仅仅是id的指定不同(一个指定为可选的,一个指定了默认值)为何就导致了输出的URL不同呢?
第一个你加了id =UrlParameter.Optional ,是id可以选择没有,然后action的默认是"Index"
所以生成的默认连接是没有id的值,正好你的@Html.ActionLink 中 方法名就是默认的"Index",所以也省略了。
第二个id是必须添加的,即使你没有添加id,也会生成一个空的id,空的id的连接就是http://localhost:5560/Repository/Index