KendoUI,您可以在 Template() 或 ClientTemplate() 中调用 C# 方法吗?
KendoUI, can you call C# methods within Template() or ClientTemplate()?
我需要生成一个 URL 以显示在我用 Kendo 网格创建的 table 中。问题是这个 URL 必须从模型 ID 生成。例如:
string aUrl = Url.GenerateUrl(person.Id);
然而,将它与 kendo 网格一起使用有点棘手:
...Kendo()
.Grid<Person>()
.Name("gridPeople")
.Columns(columns =>
{
columns.Bound(p => p.Name);
columns.Bound(p => Url.GenerateUrl(p.Id));
})
.DataSource(dataSource => dataSource
.Ajax()
.Read(read => read.Action("ReadPeople", "Person"))
)
会导致错误:
bound columns require a field or property access expression
我不确定如何实现它。我试过:
columns.Bound(p => p.Id).ClientTemplate(@Url.GenerateUrl("#: Id #"))
和
columns.Bound(p => p.Id).ClientTemplate("@Url.GenerateUrl(#: Id #)")
但都不起作用。第二个接近,但打印文本“@Url.Generate(XXXX-SOME-IDNO)”,其中 ID 已从模型中正确填充。但我希望它打印出该函数的结果,而不是打印出实际的编程语句:(
检查第一种方法是否存在语法错误,因为 " 放置错误。
columns.Bound(p => p.Id).ClientTemplate(@Url.GenerateUrl("#: Id #"))
其次,您可以尝试调用一个 jquery 函数,在其中传递 Id 和函数 returns 生成的 URL.
我相信 Url.GeneralUrl 只在页面呈现时计算一次,因为您使用 AJAX 作为数据源。所以你的客户端模板是调用 Url.GenerateUrl("#: Id #") 的结果,我不知道那个客户端模板是什么,但听起来它不适合你。
相反,尝试将 URL 添加到您的网格模型并在服务器端填充它(您的控制器可以创建一个 UrlHelper,如果您不知道如何操作,请进行互联网搜索)。
顺便说一句,当您已经在 C# 上下文中时,您不需要“@”符号来写出 C# 代码。所以会是
columns.Bound(p => p.Id).ClientTemplate(Url.GenerateUrl("#: Id #"))
而不是
columns.Bound(p => p.Id).ClientTemplate(@Url.GenerateUrl("#: Id #"))
我需要生成一个 URL 以显示在我用 Kendo 网格创建的 table 中。问题是这个 URL 必须从模型 ID 生成。例如:
string aUrl = Url.GenerateUrl(person.Id);
然而,将它与 kendo 网格一起使用有点棘手:
...Kendo()
.Grid<Person>()
.Name("gridPeople")
.Columns(columns =>
{
columns.Bound(p => p.Name);
columns.Bound(p => Url.GenerateUrl(p.Id));
})
.DataSource(dataSource => dataSource
.Ajax()
.Read(read => read.Action("ReadPeople", "Person"))
)
会导致错误:
bound columns require a field or property access expression
我不确定如何实现它。我试过:
columns.Bound(p => p.Id).ClientTemplate(@Url.GenerateUrl("#: Id #"))
和
columns.Bound(p => p.Id).ClientTemplate("@Url.GenerateUrl(#: Id #)")
但都不起作用。第二个接近,但打印文本“@Url.Generate(XXXX-SOME-IDNO)”,其中 ID 已从模型中正确填充。但我希望它打印出该函数的结果,而不是打印出实际的编程语句:(
检查第一种方法是否存在语法错误,因为 " 放置错误。
columns.Bound(p => p.Id).ClientTemplate(@Url.GenerateUrl("#: Id #"))
其次,您可以尝试调用一个 jquery 函数,在其中传递 Id 和函数 returns 生成的 URL.
我相信 Url.GeneralUrl 只在页面呈现时计算一次,因为您使用 AJAX 作为数据源。所以你的客户端模板是调用 Url.GenerateUrl("#: Id #") 的结果,我不知道那个客户端模板是什么,但听起来它不适合你。
相反,尝试将 URL 添加到您的网格模型并在服务器端填充它(您的控制器可以创建一个 UrlHelper,如果您不知道如何操作,请进行互联网搜索)。
顺便说一句,当您已经在 C# 上下文中时,您不需要“@”符号来写出 C# 代码。所以会是
columns.Bound(p => p.Id).ClientTemplate(Url.GenerateUrl("#: Id #"))
而不是
columns.Bound(p => p.Id).ClientTemplate(@Url.GenerateUrl("#: Id #"))