我收到一条InvalidOperationException并显示一条消息:
绑定列需要字段或属性访问表达式
我的剃刀标记是这样的:
(@Html.Kendo().Grid<StackInfo>()
.Columns(col =>
{
col.Bound(e => e.FileID).Title("ID");
col.Bound(e => e.Name).Title("Filename");
col.Bound(e => e.Status);
col.Bound(e => new { Status = e.Status, FileID = e.FileID }).ClientTemplate("#if(Status == 'new') {#"
+ "<a href=\"View?TaskID=#FileID#\">View</a>"
+ "#} else {#"
+ "<a href=\"Open?TaskID=#FileID#\">Open</a>"
+ "#} #").Title(string.Empty);
})
.AutoBind(false)
.DataSource(ds => ds
.Ajax()
.Read(r => r.Action("Tasks_Read", "Task"))
.PageSize(10)
)
.Pageable()
.Name("tasksGrid")
.Scrollable(k => k.Height(205)))
我想要完成的是网格将显示一个额外的列;它提供了一个链接,其动作实际上基于“状态”字段中的值。因此我写了这样的ClientTemplate。
但是我在那条线上得到了一个例外。这样做的正确方法是什么?
答案 0 :(得分:6)
我认为问题出在第四栏的.Bound(e => new { Status = e.Status, FileID = e.FileID })
。试试这段代码:
columns.Template(@<text></text>)
.ClientTemplate("#if(Status == 'new') {#"
+ "<a href=\"View?TaskID=#FileID#\">View</a>"
+ "#} else {#"
+ "<a href=\"Open?TaskID=#FileID#\">Open</a>"
+ "#} #").Title(string.Empty);