MVC行动中的神秘长度参数

Ole*_*ers 3 c# asp.net-mvc razor asp.net-mvc-3

我错误地把错误的构造函数放在ActionLink:

 @Html.ActionLink("Show Customer", "Load", "Customer", new {Model.Id });
Run Code Online (Sandbox Code Playgroud)

错误是,最后一个参数是类型htmlAttributes而不是routeValues(如预期的那样).所以正确的构造函数应该是:

 @Html.ActionLink("Show Customer", "Load", "Customer", new {Model.Id }, null);
Run Code Online (Sandbox Code Playgroud)

所以我不需要解决这个问题......我只是想知道,当我使用错误的构造函数时,我的routeValue必须被解释为htmlAttribute.

我很惊讶它导致了一个length参数.生成的代码是:

/客户/负载?长度= 7

只是出于好奇:它length=7来自哪里?

Dmy*_*tro 5

这是ActionLink的重载,它正在被击中:

public static MvcHtmlString ActionLink(this HtmlHelper htmlHelper, string linkText, string actionName, object routeValues, object htmlAttributes);
Run Code Online (Sandbox Code Playgroud)

所以你唯一的路由值是字符串,控制器名称,"Customer",它有公共属性Length,8个符号.而routeValues正在挑选对象的所有公共属性,并将其传递给它.

值得一提的是,您的链接将收到html属性Id ='whatever_id_model_holds',因为第4个参数映射到htmlAttributes.