1

经过一番挣扎,我设法将我的模型绑定到我的 MVC 应用程序中的剑道网格。我现在要做的是在每一行的末尾添加一个 Html.ActionLink 或一个按钮,以便在单击时打开一个新的浏览器窗口,其中包含所选人员的详细信息页面。

我的网格代码是这样的:

@ModelType CDB.GridDetail
@Code

Dim myGridData As IQueryable(Of Person) = Model.GridDetailPersons

    Html.Kendo().Grid(Of Person)(myGridData) _
.Name("Grid") _
.Columns(Sub(c)
             c.Bound(Function(s) s.PersonID)
             c.Bound(Function(s) s.Status)
             c.Bound(Function(s) s.OperationsTeam)
             c.Template(Sub()
                            Html.ActionLink("View", "Details", New With {.id = "PersonID"}, New With {.target = "_blank"})
                        End Sub).Title("View").ClientTemplate("client template")
         End Sub) _
                         .Scrollable() _
                        .Render()
End Code

我遇到的问题是我找不到将行的 PersonID 绑定到 ActionLink 的 .id 的方法。我试过 Person.PersonID 和 myGridData.PersonID

代码呈现网格和数据,但没有链接......该列是空的。

任何帮助表示赞赏。

4

2 回答 2

1

列模板是一个模板,它是用剑道的 JS 模板语言处理的,然后用于每个显示的行。IE。您需要编写代码编写一个 Kendo JS 模板,用于创建浏览器将呈现的内容。

在这种情况下,因为Html.ActionLink不验证路由参数是将模板放入id参数中:

Html.ActionLink("View", "Details", New With {.id = "#:PersonId#"}, New With {.target = "_blank"}

在线查看 Kendo 的模板。

于 2015-12-03T09:51:55.140 回答
0

尝试了理查德的回答,但这没有用......返回语法错误。

按照他提供的链接并查看其他一些文档,我确实发现这确实有效......

c.Bound(Function(p) p.PersonID).Template(Function(t) @<text>@Html.ActionLink("View", "Details", New With {.id = t.PersonID}, New With {.target = "_blank"})</text>
             End Function).Title("View Details").HtmlAttributes(New With {.style = "text-align:center;"})

我用来替换 c.Template(Sub..... 行

于 2015-12-03T15:56:36.730 回答