【问题标题】:How to render a list in a webgrid column如何在 webgrid 列中呈现列表
【发布时间】:2016-05-13 16:00:12
【问题描述】:

我的模型的属性之一是对象列表。我在视图上使用 webgrid。现在,我的视图模型将该对象列表转换为字符串,并且我的 webgrid 列显示该字符串。我在 Internet 上搜索了如何在 webgrid 列中显示列表的示例,但没有遇到任何问题。我确实找到了一个博客,该博客演示了如何在 webgrid 列中使用 webgrid,但这并不是我想要做的。我已经尝试过了,但它会产生错误(无法从 lambda 转换为 System.Func。

format: @<text>@foreach (var p in item.PhoneList) { p.PhoneNumber; }</text>

任何帮助将不胜感激。

【问题讨论】:

    标签: asp.net-mvc-4 webgrid


    【解决方案1】:

    我只是想出了如何自己做到这一点。简短的回答:您需要一个 HTML Helper。这是一个漂亮的good reference on making your own

    基本上你需要:

    1. 制作一个 Helpers/MyHelper.cs 文件
    2. 将 MyHelper 类设为静态
    3. 在 MyHelper 类中创建一个具有以下签名的新函数: public static MvcHtmlString MyFunction(this HtmlHelper helper, [input type] myInput)

    然后只需添加适当的引用。像这样调用 Helper 内联:

    ...

    MyWebGrid.Column(format: @&lt;text&gt;@Html.MyFunction(@item.[ListToExtract] as List&lt;[ListTypeToExtract&gt;)&lt;/text&gt;, header:...

    ...

    【讨论】:

    • 不是我所希望的,但我想没有办法完成我正在尝试的事情。我想我会坚持在我的 ViewModel 中创建字符串。我会接受这个作为答案。
    【解决方案2】:

    另一种方法是在视图中使用辅助函数。

    @helper WriteItems(List<string> myList)
    {
        foreach (var myItem in myList)
        {
           <span>@myItem</span>
        }
    }
    

    然后从 webgrid 列调用它:

    format: item => (WriteItems(item.Labels)
    

    【讨论】:

      猜你喜欢
      • 2023-04-04
      • 2016-10-12
      • 1970-01-01
      • 2021-01-24
      • 2013-05-25
      • 2021-04-01
      • 1970-01-01
      • 2016-05-02
      • 2013-12-07
      相关资源
      最近更新 更多