我一直在尝试更改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));
}
有谁能告诉我这里的问题是什么,以及我如何解决它?
答案 0 :(得分: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更好。