日期:2014-05-17  浏览次数:20427 次

问一个mvc路由的简单问题
 @Html.ActionLink("GetList","GetList",new { typeid = 1,page = 1})
生成的结果是
<a href="/Cases/GetList?typeid=1&page=1">GetList</a>
我怎么样能输出这样的路由
<a href="/Cases/GetList/1/1">GetList</a>

routeconfig是这样写的 


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

            routes.MapRoute(
              "Cases",
              "{controller}/{action}/{typeid}/{page}",
              new { controller = "Cases", action = "GetList", typeid = 1, page = 1 }
              );
  

------解决方案--------------------
把第二个路由定义放到第一个的前边,或者使用constraints来更精准地限定路由,否则你的代码匹配的是第一个路由,当然会生成你现在的结果。
------解决方案--------------------
引用:
Quote: 引用:

把第二个路由定义放到第一个的前边,或者使用constraints来更精准地限定路由,否则你的代码匹配的是第一个路由,当然会生成你现在的结果。

 @Html.ActionLink 的方法里面 没有指定路由的重载啊

没有,你可以用RouteLink
------解决方案--------------------
引用:
Quote: 引用:

把第二个路由定义放到第一个的前边,或者使用constraints来更精准地限定路由,否则你的代码匹配的是第一个路由,当然会生成你现在的结果。

 @Html.ActionLink 的方法里面 没有指定路由的重载啊

和ActionLink没关系只要你路由匹配到了就会生成指定的url