如何使用ActionLinks集合填充WebGrid单元格

时间:2013-05-24 12:42:55

标签: asp.net-mvc razor webgrid

我有一个像这样的模型:

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

使用Razor和asp.net MVC 4获取我在WebGrid中显示的IEnumerable<Model>的视图。

到目前为止,我有:

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

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

我试过创建一个Linq查询来将它们投射到ActionLink s,(甚至是一个String数组并使用String.Join()来测试它)但是它不能在运行时编译。

例如:

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

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

  

错误CS1977:不能将lambda表达式用作a的参数   动态调度操作,而不先将其转换为   委托或表达式树类型

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

|--------------------------------|
|**Text**  | **Values**          |
|--------------------------------|
|Text A    | Val 1, Val 2, Val 3 |
|--------------------------------|

其中Val n是一个链接,可以引导您离开以查看更多详细信息。

有谁知道这样做的方法?

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

1 个答案:

答案 0 :(得分:0)

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

(item).Cast<AnotherType>()