【问题标题】:Using WebGrid to show a list of email addresses (strings) - ASP.Net MVC4使用 WebGrid 显示电子邮件地址列表(字符串) - ASP.Net MVC4
【发布时间】:2014-01-22 00:59:05
【问题描述】:

我声明一个 WebGrid 如下:

@{
    WebGrid grid = null;
    if (Model.EmailAddressesOfChosenClient.Count<string>() != 0)
    {
        grid = new WebGrid(Model.EmailAddressesOfChosenClient, ajaxUpdateContainerId: "gridContent");
    }
}

然后我尝试在不指定任何列的情况下按如下方式呈现 WebGrid:

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

模型的我的 EmailAddressesOfChosenClient 属性是 IEnumerable 字符串,其中每个字符串都是一个电子邮件地址。我希望 WebGrid 包含标题为“电子邮件地址”的单列,后跟电子邮件地址字符串行。

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

这是为什么呢?如何配置以在行中显示电子邮件地址并带有正确的列标题?非常感谢

【问题讨论】:

    标签: asp.net-mvc-4 webgrid


    【解决方案1】:

    这是为什么呢?

    因为如果您没有明确指定列,帮助程序使用反射来检查类型的公共属性并为它们自动生成一个列。所以System.String 具有.Length 公共属性,因此您会得到一个列。

    您将需要使用自定义列:

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

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

    【讨论】:

    • *** 你是明星 ***
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-23
    • 2015-04-24
    • 2019-12-26
    相关资源
    最近更新 更多