ASP.NET MVC3 で新しい WebGrid を使用しようとしています。また、さまざまなアクション (編集、表示、削除) を実行するリンク アイコンのセットを表示したい列の 1 つを使用しようとしています。次の HTML を出力します。
<a href="" title=""><img alt="" src="" /></a>
拡張機能は MvcHtmlString を返し、Razor ビューで単独で使用すると正常に動作します。例: @Html.ActionLinkIconForEditAction("Customer", 2)
問題は、オブジェクトの ID を渡すときに、WebGrid 列でこのヘルパーを (アクションごとに 1 回) 呼び出す必要があることです。私が困惑している問題は、コンパイラが 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 とこのスレッドのすべてのドキュメントも読みました、そしてまだそれを完全に理解することはできません:)
誰かが私が間違っていることを見つけることができますか?