Согласно этому вопросу я должен написать что-то вроде этого:
@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 это, похоже, не работает.Кто-нибудь еще видел эту проблему?
Это преднамеренное изменение, и если так, что я должен вместо этого сделать?
ОБНОВЛЕНИЕ - КАК ИСПРАВИТЬ (ВРУЧНУЮ)
I 'Мы применили следующие изменения к файлу 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, когда он будет выпущен, возможно, в ближайшее время.