根据这个问题,我应该能够像下面这样编写:
@Html.ActionLink( "Delete", "Delete", "Message", new { data_id=id, @class="delete" } )
或者像一个快乐的T4MVC用户一样可以这样做:
@Html.ActionLink( "Delete", MVC.Message.Actions.Delete(), new { data_id=id, @class="delete" } )
在渲染时替换"data_id"中的下划线:
<a href="/message/delete" class="delete" data-id="42">Delete</a>
然而,在MVC 4 Beta中似乎无效。是否有其他人遇到了这个问题?
这是一个有意的更改吗?如果是,我应该怎么做?
更新 - 如何手动修复
我已经对T4MVC.tt文件进行了以下更改,以解决生成代码中的问题:
public static MvcHtmlString ActionLink(this HtmlHelper htmlHelper, string linkText, ActionResult result, object htmlAttributes, string protocol = null, string hostName = null, string fragment = null) {
//was: return ActionLink(htmlHelper, linkText, result, new RouteValueDictionary(htmlAttributes), protocol, hostName, fragment);
return htmlHelper.RouteLink(linkText, null, protocol, hostName, fragment, result.GetRouteValueDictionary(), HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes));
}
更新2 - 修复已经发布
David Ebbo非常迅速地回应了报告的问题,并已将上述修复合并到T4MVC中。
更新3 - 修复修复
尴尬的是,最初提交的修复实际上并没有起作用,因为它仍然调用了一个无效的重载。我现在已经修改了代码,使其与MVC内部使用的帮助程序方法相同,并通知David将其包含在T4MVC中。从codeplex获取2.6.70或在NuGet发布后进行更新,可能很快就会发布。