现在的位置: 首页 > 综合 > 正文

asp.net mvc 生成“*/?Length=*”的情况解决方法

2012年07月18日 ⁄ 综合 ⁄ 共 980字 ⁄ 字号 评论关闭

以前用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>

抱歉!评论已关闭.