我只是想知道为什么我们没有像下面这样的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,它也必须为我设置第五个参数(空字符串)。
答案 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
传递给最后一个参数。