MVC3中的WebGrid列格式问题

Ror*_*san 12 c# asp.net-mvc webgrid razor asp.net-mvc-3

我一直试图改变WebGrid中单个列的格式而没有太大的成功.所说的专栏是这样的:

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

错误是:

'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
),
Run Code Online (Sandbox Code Playgroud)

供参考,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));
}
Run Code Online (Sandbox Code Playgroud)

谁能告诉我这里的问题是什么,以及我如何解决它?

Dar*_*rov 21

这是由于WebGrid的丑陋和所有这些动态垃圾.你需要一个演员:

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

据说,不要犹豫,检查出更好的MvcContrib GridTelerik Grid.

  • 它总是从微软获得的最好的. (2认同)