如何在ASP.Net MVC 5中传递路由属性但不传递ActionLink中的htmlattribute

时间:2017-08-18 23:44:56

标签: asp.net-mvc asp.net-mvc-5

我只是想知道为什么我们没有像下面这样的Action链接的重载。

@Html.ActionLink(displayName, actionName,controllerName,routeValue)

@Html.ActionLink(@item.Resume.ResumeName, "Details","Resume", new { id=item.Id})

当我做下面的事情时,一切正常

@Html.ActionLink(displayName, actionName,controllerName,routeValue,"")

@Html.ActionLink(@item.Resume.ResumeName, "Details","Resume", new { id=item.Id},"")

我检查了过载,有四个参数,唯一可用的过载是

@Html.ActionLink(displayName, actionName,controllerName, htmlattribute)

所以,我是初学者,只是想知道没有任何特殊原因没有使用routevalue第4个参数(最后一个参数)进行重载。所以基本上使用当前框架,如果我需要发送一个routevalue,它也必须为我设置第五个参数(空字符串)。

1 个答案:

答案 0 :(得分:2)

ActionLink()方法允许您添加路由值和/或 html属性,这两个属性都接受object作为参数。

如果签名只是

@Html.ActionLink(string displayName, string actionName, string controllerName, object routeValues)

然后如果您将new { id = 1 }作为参数传递给第4个参数,则无法区分是否要将其添加为路径值或html属性。

请注意,您声明的@Html.ActionLink(string displayName, string actionName, string controllerName, object htmlAttributes)没有超载。过载实际上是

@Html.ActionLink(string displayName, string actionName, string controllerName, object routeValues, object htmlAttributes)

@Html.ActionLink(string displayName, string actionName, object routeValues, object htmlAttributes)

并且只添加路由值,通常会将null传递给最后一个参数。