asp.net mvc 生成“*/?Length=*”的情况解决方法
以前用asp.net mvc做东西的时候经常出现“*/?Length=*”的情况。那时没有什么好的解决方法,就通过静态链接来解决,问题当然也很多。最近又出来了这样的情况,语句是<%= Html.ActionLink("Default", "Index", "Default", new { id = 1 })%>,以前技术不行还可以忍受,现在怎么能行呢。果断Google,"asp.net mvc Length=5",第一条就是。
链接地址:http://stackoverflow.com/questions/316889/asp-net-mvc-passing-an-id-in-an-actionlink-to-the-controller。看了一下,情况和我的差不多,解决办法就是在ActionLink参数后面再加一个null。什么原因呢?
原来Html.ActionLink("Default", "Index", "Default", new { id = 1 })对应的重载是下面这个:
public static MvcHtmlString ActionLink(this HtmlHelper htmlHelper, string linkText, string actionName, object routeValues, object htmlAttributes);
而自己想要的重载是public static MvcHtmlString ActionLink(this HtmlHelper htmlHelper, string linkText, string actionName, string controllerName, object routeValues),可惜它没有也不会有(会重载冲突)。而加一个null参数就是下面这个重载了
public static MvcHtmlString ActionLink(this HtmlHelper htmlHelper, string linkText, string actionName, string controllerName, object routeValues, object htmlAttributes);
这个正是自己想要的。在ActionLink后再增加一个null就符合后面一个重载了,果断生成。OK,<ahref="/Default/Index/1">Default</a>

“一步登天做不到,但一步一个脚印能做到。一鸣惊人不好做,但一股劲做好一件事,可以做。一下成为天才不可能,但每天进步一点点有可能”
浙公网安备 33010602011771号