首页 新闻 会员 周边

MVC中Html.ActionLink生成Url格式问题

0
悬赏园豆:10 [已解决问题] 解决于 2010-12-30 08:54

Html.ActionLink生成的Url为什么有时后面带“”有时是“/”呢?这个是什么在控制的啊?求教!!!

路由是这样定义的:

routes.MapRoute(
"AllNews",
"{controller}/{action}/{id}",
new { controller = "News", action = "List"},
new { id = @"\d{1,4}" }
);


List.aspx页面生成Url代码:

<%: Html.ActionLink("详细", "Details",new { id = item.Id }) %>

生成 http://localhost:1390/News/Details?id=46 

如何写才能生成  http://localhost:1390/News/Details/46  这个样子的呢?

webaspx的主页 webaspx | 小虾三级 | 园豆:1973
提问于:2010-12-29 11:47
< >
分享
最佳答案
0

这个涉及的到mvc路由的outbound机制,可以参考我的文章加以理解,希望对你有所帮助:

http://www.cnblogs.com/P_Chou/archive/2010/11/08/details-asp-net-mvc-03.html

收获园豆:10
P_Chou | 菜鸟二级 |园豆:210 | 2010-12-29 23:54
已经明白了,因为我把系统默认的路由中的参数{id}给删除了,然后那样写的话匹配的是Default这个路由,但是Default没有{id}才会生成那样的Url。看了下System.Web.Routing的源代码,发现有个变量为unuserValues数组,有值的话就会生成“?”否则为“/”。呵呵~~
webaspx | 园豆:1973 (小虾三级) | 2010-12-30 08:54
其他回答(1)
0

不用定义新路由,使用系统默认的即可:

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

 

鹤冲天 | 园豆:2379 (老鸟四级) | 2010-12-29 12:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册