Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC3中的WebGrid列格式问题_C#_Asp.net Mvc_Asp.net Mvc 3_Razor_Webgrid - Fatal编程技术网

C# MVC3中的WebGrid列格式问题

C# MVC3中的WebGrid列格式问题,c#,asp.net-mvc,asp.net-mvc-3,razor,webgrid,C#,Asp.net Mvc,Asp.net Mvc 3,Razor,Webgrid,我一直在尝试更改WebGrid中单个列的格式,但没有取得多大成功。所述专栏如下: grid.Column( columnName: "EmailAddress", header: "Email Address", format:(item) => Html.EmailLink(item.EmailAddress, item.EmailAddress, ""), canSort: false ), 错误是: 与“System.Web.Helpers.W

我一直在尝试更改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
),

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

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

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

话虽如此,但请毫不犹豫地结帐,或者选择哪一个更好。

很好,这就解决了问题。我将研究MvcContrib控件,因为这个解决方案非常不雅观。我还不知道他们发布了任何与Razor/MVC3兼容的产品?@Rory McCrossan,WebGrid是与MVC 3一起发布的,它应该与Razor配合良好,所以这是目前从Microsoft获得的最好的产品。这始终是从Microsoft获得的最好的产品。是否可以使用HtmlString作为标题?我一直在尝试将HtmlString转换回字符串,但结果是字符串显示为纯html。。。我一直在考虑覆盖WebGrid,但我希望有一种更简单的方法。如果您可以扩展这个答案,那么HtmlString可以用于header属性,那就太好了。
grid.Column(
    columnName: "EmailAddress", 
    header: "Email Address", 
    format: item => Html.EmailLink(
        (string)item.EmailAddress, 
        (string)item.EmailAddress, 
        ""
    ), 
    canSort: false
)