首页新闻找找看学习计划

MVC4中的路由问题

0
悬赏园豆:30 [已解决问题] 解决于 2014-12-21 20:50

当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不同呢?

加州招待所的主页 加州招待所 | 初学一级 | 园豆:134
提问于:2014-11-24 00:15
< >
分享
最佳答案
1

第一个你加了id =UrlParameter.Optional ,是id可以选择没有,然后action的默认是"Index"

所以生成的默认连接是没有id的值,正好你的@Html.ActionLink 中 方法名就是默认的"Index",所以也省略了。

 

第二个id是必须添加的,即使你没有添加id,也会生成一个空的id,空的id的连接就是http://localhost:5560/Repository/Index

收获园豆:30
刘宏玺 | 专家六级 |园豆:14004 | 2014-11-24 09:22
其他回答(3)
0
Mr.Brian | 园豆:1518 (小虾三级) | 2014-11-24 09:29
0

1楼详解~

幻天芒 | 园豆:36594 (高人七级) | 2014-11-24 13:36
0

楼上正解,你还可以再里面加上域名呢 (area)

_Vegetables | 园豆:569 (小虾三级) | 2014-11-25 08:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册