12

WebGridの単一の列の形式を変更しようとしても成功しませんでした。上記の列はこれです:

grid.Column(
    columnName: "EmailAddress", 
    header: "Email Address", 
    format:(item) => Html.EmailLink(item.EmailAddress, item.EmailAddress, ""), 
    canSort: false
),

エラーは次のとおりです。

'System.Web.Helpers.WebGrid.Column(string、string、System.Func、string、bool)'に最適なオーバーロードされたメソッドの一致には、いくつかの無効な引数があります

メソッドのシグネチャが一致するため、混乱しています。また、列を以下に変更すると、エラーなしで機能します。

grid.Column(
    columnName: "EmailAddress", 
    header: "Email Address", 
    format:(item) => new HtmlString(String.Format("<a href=\"mailto:{0}\" class=\"{2}\">{1}</a>", item.EmailAddress, item.EmailAddress, "")), 
    canSort: false
),

参考までに、EmailLinkは非常に基本的なHtmlHelper拡張メソッドです。

public static IHtmlString EmailLink(this HtmlHelper helper, string emailAddress, string linkText, string linkClass) {
    return new HtmlString(String.Format("<a href=\"mailto:{0}\" class=\"{2}\">{1}</a>", emailAddress, linkText, linkClass));
}

ここでの問題とは何か、どうすれば解決できるか教えてもらえますか?

4

1 に答える 1

21

これは、WebGrid の醜さと、このすべての動的ながらくたが原因です。キャストが必要です:

grid.Column(
    columnName: "EmailAddress", 
    header: "Email Address", 
    format: item => Html.EmailLink(
        (string)item.EmailAddress, 
        (string)item.EmailAddress, 
        ""
    ), 
    canSort: false
)

これは、はるかに優れているMvcContrib GridまたはTelerik Gridをチェックアウトすることを躊躇しないと言われています。

于 2011-03-22T18:31:52.180 に答える