我有一个像这样的模型:
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
。
答案 0 :(得分:0)
您必须将项目(动态)强制转换为AnotherType
(item).Cast<AnotherType>()