【发布时间】:2012-03-24 12:25:26
【问题描述】:
根据this question,我应该能够写出这样的东西:
@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 测试版。还有其他人看到这个问题吗?
这是故意的改变,如果是,我应该怎么做?
更新 - 如何修复(手动)
我已对 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 对the reported issue 的响应速度非常快,并且已经将上述修复合并到 T4MVC 中。
更新 3 - 修复问题
非常尴尬的是,提交的原始修复实际上并没有工作,因为它仍然称为无效重载。我现在修改了代码,使其与 MVC 内部所做的相同(使用他们的帮助方法),并通知 David 将其包含在 T4MVC 中。从codeplex 获取 2.6.70,或者在发布时使用 NuGet 进行更新,可能很快。
【问题讨论】:
-
我更喜欢直接写Delete..@Html.ActionLink()对 UI 不友好。
标签: c# asp.net-mvc html asp.net-mvc-4