2

我有一个这样的模型:

class Model
{
    public String Text { get; set; }
    public AnotherType[] Values { get; set; }
}

还有一个视图,IEnumerable<Model>我使用 Razor 和 asp.net MVC 4 在 WebGrid 中显示。

到目前为止,我有:

@{ var grid = new WebGrid(Model); }
<div id="grid">
      @grid.GetHtml(
          columns: 
              grid.Columns(
                  grid.Column("Text")))
</div>

Values我想要的是根据第二列中我的模型中的值创建一个逗号分隔的链接列表。

我已经尝试创建一个 Linq 查询来将它们投影到ActionLinks 中(或者甚至是一个字符串数组并使用 String.Join() 来测试它),但这不会在运行时编译。

例如:

grid.Column("Values",
    format: (item) => String.Join(item.Select(v => v.Property).ToArray()))))

我得到的错误是(我认为):

错误 CS1977:不能使用 lambda 表达式作为动态分派操作的参数,除非先将其转换为委托或表达式树类型

我希望我的输出看起来像:

|--------------------------------|
|**文字** | **价值观** |
|--------------------------------|
|文字A | 瓦尔 1、 瓦尔 2、 瓦尔 3 |
|--------------------------------|

哪里Val n有一个链接可以让您离开以查看更多详细信息。

有谁知道这样做的方法?

作为一种解决方法,我将模型中的值组合起来,并String用结果公开一个属性,但这不允许我创建ActionLinks.

4

1 回答 1

0

您必须将项目(动态)转换为 AnotherType

(item).Cast<AnotherType>()
于 2016-10-06T14:37:39.223 回答