【发布时间】:2016-12-05 07:43:06
【问题描述】:
我需要在 razor 函数中使用绑定列值,该函数在 Kendo UI MVC 网格的 ClientTemplate 中使用。像下面的“AnyColumnValue”参数:
.ClientTemplate(@KendoHtmlFuncs.RequestingDeleteWithConfirmationLink(itemNameL, AnyColumnValue));
完整示例如下:
@(Html.Kendo().Grid<DisplayOfGroupCompanyVm>()
.Name(itemNameL + "-definitions-grid")
.Columns(columns =>
{
columns.Bound(c => c.Name);
columns.Bound(c => c.DateCreated).ClientTemplate("#= kendo.toString(DateCreated,'yyyy-MM-dd')#"); //.Width(150);
columns.Bound(c => c.IsActive);
columns.Bound(c => c.CreateStatus);
columns.Template(@<text></text>)
.Width(100)
.ClientTemplate(@KendoHtmlFuncs.GetModalForRequestingEditLink(itemNameL));
columns.Template(@<text></text>)
.Width(100)
.ClientTemplate(@KendoHtmlFuncs.RequestingDeleteWithConfirmationLink(itemNameL, AnyColumnValue));
})
【问题讨论】:
-
什么是 AnyColumnValue?绑定到网格的数据源中的列的实际值?如果是这样,你不能做你想做的事情,因为 KendoHtmlFuncs.RequestingDeleteWithConfirmationLink() 是一个服务器端函数(在 cshtml 渲染期间在服务器上执行)但是 AnyColumnValue 在网格绑定到数据源之前没有值客户端。看起来您必须将 RequestingDeleteWithConfirmationLink() 设为客户端函数...您不能在 ClientTemplate 中执行服务器代码。
-
@TheDreadPirateStephen 谢谢,是的。除此之外,是否有解决方法将列值用作剃刀函数的参数?
-
我不这么认为,因为服务器上不存在列的值(执行剃刀功能的地方)。您可以使用 ClientTemplate 中的实际列值,因为 ClientTemplate 在呈现行时在客户端上执行,您只是不能调用 Razor 函数,因为它已经在服务器上执行到为视图生成 HTML,然后返回给客户端。请参阅docs.telerik.com/aspnet-mvc/helpers/grid/… 或提供您传递的函数和列的实现,我会尝试写一个答案。
标签: asp.net-mvc razor kendo-ui grid