Asp.net mvc 4 使用WebGrid显示电子邮件地址(字符串)列表-ASP.Net MVC4

Asp.net mvc 4 使用WebGrid显示电子邮件地址(字符串)列表-ASP.Net MVC4,asp.net-mvc-4,webgrid,Asp.net Mvc 4,Webgrid,我声明WebGrid如下所示: @{ WebGrid grid = null; if (Model.EmailAddressesOfChosenClient.Count<string>() != 0) { grid = new WebGrid(Model.EmailAddressesOfChosenClient, ajaxUpdateContainerId: "gridContent"); } } @{ WebGrid=null; i

我声明WebGrid如下所示:

@{
    WebGrid grid = null;
    if (Model.EmailAddressesOfChosenClient.Count<string>() != 0)
    {
        grid = new WebGrid(Model.EmailAddressesOfChosenClient, ajaxUpdateContainerId: "gridContent");
    }
}
@{
WebGrid=null;
if(Model.EmailAddressesOfChosenClient.Count()!=0)
{
grid=新的WebGrid(Model.EmailAddressesOfChosenClient,ajaxUpdateContainerId:“gridContent”);
}
}
然后,我尝试按如下方式呈现WebGrid,而不指定任何列:

<div id="gridContent">
@{ if (grid != null)
   {
      @grid.GetHtml()
   }
}
</div>

@{如果(网格!=null)
{
@grid.GetHtml()
}
}
模型的My EmailAddressesOfChosenClient属性是IEnumerable of strings,其中每个字符串都是一个电子邮件地址。我希望WebGrid包含一个标题为“Email Address”的列,后跟一行行Email Address字符串

但是,如果以这种方式呈现,我的WebGrid将显示列标题“Length”,行包含每个电子邮件地址字符串的长度

为什么呢?如何配置内容,以便在行和列标题中显示电子邮件地址?非常感谢

为什么呢

因为如果不显式指定列,辅助对象将使用反射检查类型的公共属性并自动为其生成列。因此,
System.String
具有
.Length
公共属性,因此您可以得到一列

您需要使用自定义列:

@grid.GetHtml(
    columns: grid.Columns(
        grid.Column("email", format: item => item)
    )
)

或者,您可以定义一个视图模型,并让您的
IEnumerable
使用此视图模型而不是字符串。

***您是一个明星***