Согласно этому вопросу, я должен быть можно написать что-то вроде этого:
@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» во время рендеринга:
Delete
Однако, похоже, это не работает в бета-версии MVC 4. Кто-нибудь еще сталкивался с этой проблемой?
Является ли это преднамеренным изменением, и если да, то w шляпу я должен сделать вместо этого?
ОБНОВЛЕНИЕ – КАК ИСПРАВИТЬ (ВРУЧНУЮ)
Я внес следующие изменения в файл 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 – ИСПРАВЛЕНИЕ ДОСТУПНО
Дэвид Эббо молниеносно отреагировал на сообщение о проблемеи уже объединил указанное выше исправление в T4MVC.
ОБНОВЛЕНИЕ 3 — ИСПРАВЛЕНИЕ ИСПРАВЛЕНИЯ
К сожалению, исходное представленное исправление на самом деле не работало, так как по-прежнему вызывало недопустимую перегрузку. Теперь я изменил код, чтобы сделать то же самое, что MVC делает внутри (используя их вспомогательный метод), и уведомил Дэвида, чтобы он был включен в T4MVC. Возьмите 2.6.70 из codeplexили обновите с помощью NuGet, когда он будет выпущен, возможно, в ближайшее время.