Проблема формата столбца WebGrid в MVC3 - PullRequest
12 голосов
/ 22 марта 2011

Я пытался изменить формат одного столбца в 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));
}

Может кто-нибудь сказать мне, в чем проблема, и как я могу решить ее?

1 Ответ

21 голосов
/ 22 марта 2011

Это связано с уродством WebGrid и всей этой динамической чушью.Вам нужен состав:

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

При этом не стесняйтесь оформить заказ MvcContrib Grid или Telerik Grid , которые намного лучше.

...