Я пытаюсь использовать новый WebGrid в ASP.NET MVC3, и один из столбцов я хочу отображать набор значков ссылок, которые выполняют различные действия (Edit, View, Delete)... Для этого у меня есть расширения HtmlHelper, которые в основном выводят следующий HTML:
<a href="" title=""><img alt="" src="" /></a>
Расширение возвращает MvcHtmlString, и оно отлично работает при использовании в представлениях Razor самостоятельно. Eg: @Html.ActionLinkIconForEditAction( "Клиент", 2)
Проблема заключается в том, что мне нужно вызвать этот помощник (один раз для каждого действия) в столбце WebGrid при передаче идентификатора объекта. Проблема, с которой я столкнулся, заключается в том, что компилятор дает мне ошибку, говоря, что он не может преобразовать MvcHtmlString (или "lambda expression" в зависимости от вызова, который я пытаюсь), к System.Func, ожидаемому в формате...
Так, например, это работает:
grid.Column(header: "", format: @<text>@Html.ActionLinkIconForEditAction("Customer", 2)</text>)
Но это не так:
grid.Column(header: "", format: (customer) => @<text>@Html.ActionLinkIconForEditAction("Customer", customer.Id)</text>)
grid.Column(header: "", format: (customer) => Html.ActionLinkIconForEditAction("Customer", customer.Id))
Я получаю:
Error 4 Argument 3: cannot convert from 'lambda expression' to 'System.Func<dynamic,object>'
или для этого вызова:
grid.Column(header: "", format: Html.ActionLinkIconForEditAction("Customer", customer.Id)),
Я получаю:
Error 5 Argument 3: cannot convert from 'System.Web.Mvc.MvcHtmlString' to 'System.Func<dynamic,object>'
Что странно, у меня есть другие столбцы, которые упрощают lambdas, прямое использование Access Model ModelerProperty и даже вывод из String.Format("")... Все они отлично работают... Я прочитал все документы в Func и этот поток, а также, и до сих пор не могу это понять:)
Может ли кто-нибудь определить, что я делаю неправильно?