I’m VERY confused as to why this code
Html.ActionLink("About", "About", "Home", new { hidefocus = "hidefocus" })results in this link:
<a hidefocus="hidefocus" href="/Home/About?Length=4">About</a>The hidefocus part is what I was aiming to achieve, but where does the “?Length=4” come from?
Solution
The Length=4 is coming from an attempt to serialize a string object. Your code is running this
ActionLinkmethod:public static string ActionLink(this HtmlHelper htmlHelper, string linkText, string actionName, object routeValues, object htmlAttributes)This takes a
stringobject “Home” for routeValues, which the MVC plumbing searches for public properties turning them into route values. In the case of astringobject, the only public property isLength, and since there will be no routes defined with a Length parameter it appends the property name and value as a query string parameter. You’ll probably find if you run this from a page not onHomeControllerit will throw an error about a missingAboutaction method. Try using the following:Html.ActionLink("About", "About", new { controller = "Home" }, new { hidefocus = "hidefocus" })