经过一番努力,我已经设法将我的模型绑定到我的MVC应用程序中的Kendo Grid。我现在要做的是在每行的末尾添加一个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
代码,因为它呈现网格和数据,但没有链接......列是空的。
任何帮助表示感谢。
答案 0 :(得分:1)
列模板是一个模板,它使用Kendo的JS模板语言处理,然后用于每个显示的行。 IE浏览器。您需要编写代码编写一个Kendo JS模板,而不是用于创建浏览器将呈现的内容。
在这种情况下,因为Html.ActionLink
不验证路由参数是将模板放入id参数:
Html.ActionLink("View", "Details", New With {.id = "#:PersonId#"}, New With {.target = "_blank"}
请参阅Kendo的模板online。
答案 1 :(得分: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 ..... line