Я пытаюсь использовать новую WebGrid в ASP.NET MVC3, и в одном из столбцов я хочу отобразить набор значков ссылок, которые выполняют различные действия (Edit, View, Delete) ... Для этой цели у меня есть HtmlHelperрасширения, которые в основном выводят следующий HTML:
<a href="" title=""><img alt="" src="" /></a>
Расширение возвращает MvcHtmlString, и оно прекрасно работает, когда используется в представлениях Razor само по себе ... Например: @ Html.ActionLinkIconForEditAction ("Customer", 2)
Проблема в том, что мне нужно вызывать этого помощника (один раз для каждого действия) в столбце WebGrid при передаче идентификатора объекта.Проблема, с которой я сталкиваюсь, состоит в том, что компилятор выдает мне сообщение о том, что он не может преобразовать MvcHtmlString (или «лямбда-выражение» в зависимости от вызова, который я пытаюсь) в 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>'
Что странно У меня есть другие столбцы, которые используют лямбда-выражения, прямые методы доступа Model.Property и даже вывод из String.Format ("") ... Они всеработает нормально ... Я прочитал все документы по Func и этой ветке, а также , и до сих пор не могу понять это:)
Может кто-нибудь заметить, что я делаю неправильно?