根据这个问题的说法,我应该能够写这样的东西:
@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对报告的问题的反应非常迅速,并且已经将上面的修复程序合并到T4MVC中。
更新3-修复修复
令人尴尬的是,最初提交的修复程序实际上没有工作,因为它仍然被称为无效的重载。现在,我已经修改了代码,以便在内部(使用它们的助手方法)执行与MVC相同的操作,并通知David将其包含在T4MVC中。从codeplex获取2.6.70,或者在发布时使用NuGet进行更新,可能很快。
发布于 2012-03-07 03:46:37
试一试
@Html.ActionLink( "Delete", "Delete", "Message", null, new { data_id=id, @class="delete" } )
我认为,因为所有的重载,它是假设您的第四个参数是routeValues参数。
https://stackoverflow.com/questions/9593631
复制相似问题