kendo ui "Invalid template" 详细信息模板中的列客户端模板错误
kendo ui "Invalid template" error in a column client template within a detail template
我有一个带有客户详细信息模板的网格。此详细信息模板呈现在单独的局部视图中。在这个网格中,我需要使用客户端模板来格式化一些列。不幸的是我 运行 进入了一个无效的模板错误。
这是我的详细信息模板:
<script id="operationDetailTemplate" type="text/kendo-template">
@(Html.Kendo().TabStrip()
.Name(componentName: "tabStrip_#=Id#")
.SelectedIndex(index: 0)
.Animation(animation => animation.Open(open => open.Fade(FadeDirection.In)))
.Items(items => {
items.Add().Text(this.LocalResources(key: "Messages")).Content(@<text>
@(Html.Kendo().Grid<NotificationViewModel>()
.Name(componentName: "notificationGrid_#=Id#")
.Pageable()
.Scrollable()
.Filterable()
.Sortable()
.Columns(col => {
col.Bound(c => c.DateCreated).Format(value: "{0:yyyy/MM/dd HH:mm}");
col.Bound(c => c.Severity);
col.Bound(c => c.Title);
col.Bound(c => c.Text).ClientTemplate(string.Format("{0}...", "#= formatter(Text, 20) #"));
})
.DataSource(ds => ds.Ajax().Sort(sort => sort.Add(memberName: "DateCreated").Descending())
.Read(read => read.Route(MessageEventControllerRoute.PostReadForOperation, new RouteValueDictionary { { "operationId", "#=Id#" }, { "culture", UICulture.ToLower() } })))
.ToClientTemplate())
</text>
);
items.Add().Content(@<text>
@(Html.Kendo().Grid<OperationViewModel>().Name(componentName:"alternativesGrid")
.Columns(col => {
col.Bound(op => op.OperationIdFormatted);
col.Bound(op => op.EfficiencyRank);
col.Bound(op => op.WorkOrder.WorkOrderIdFormatted);
col.Bound(op => op.Length)
.ClientTemplate(value: "#if (data.Length) {# #:kendo.toString(Length.Hours, '00')#:#:kendo.toString(Length.Minutes, '00')#:#:kendo.toString(Length.Seconds, '00')# #}#")
.EditorTemplateName(templateName: "TimeSpan");
})
.DataSource(ds => ds.Ajax()
.Read(read => read.Route(OperationControllerRoute.PostOperationAlternatives, new RouteValueDictionary { { "workOrderId", "#=Operation.WorkOrderId#" }, { "seqNo", "#=Operation.SequenceNumber#" }, { "culture", UICulture.ToLower() } })).Model(m => m.Id(op => op.Id)))
.ToClientTemplate()
)</text>);
})
.ToClientTemplate())
</script>
由于我无法将模板 ID 传递给列模板,所以我不知道如何避免模板无效错误。
知道如何在这种情况下使用客户端模板吗?
问候
伯恩德
经过更多的试验,我找到了两个解决方案。
- 转义低级网格中的客户端模板。
正在使用
.ClientTemplate(value: "\#if (data.Length) {\# \#:kendo.toString(Length.Hours, '00')\#:\#:kendo.toString(Length.Minutes, '00')\#:\#:kendo.toString(Length.Seconds, '00')\# \#}\#")
而不是
.ClientTemplate(value: "#if (data.Length) {# #:kendo.toString(Length.Hours, '00')#:#:kendo.toString(Length.Minutes, '00')#:#:kendo.toString(Length.Seconds, '00')# #}#")
- 更改选项卡内容以按需加载。
唯一的问题是未调用 ajax 数据源。所以将模型传递给局部视图并删除
.ToClientTemplate()
说明。
我有一个带有客户详细信息模板的网格。此详细信息模板呈现在单独的局部视图中。在这个网格中,我需要使用客户端模板来格式化一些列。不幸的是我 运行 进入了一个无效的模板错误。
这是我的详细信息模板:
<script id="operationDetailTemplate" type="text/kendo-template">
@(Html.Kendo().TabStrip()
.Name(componentName: "tabStrip_#=Id#")
.SelectedIndex(index: 0)
.Animation(animation => animation.Open(open => open.Fade(FadeDirection.In)))
.Items(items => {
items.Add().Text(this.LocalResources(key: "Messages")).Content(@<text>
@(Html.Kendo().Grid<NotificationViewModel>()
.Name(componentName: "notificationGrid_#=Id#")
.Pageable()
.Scrollable()
.Filterable()
.Sortable()
.Columns(col => {
col.Bound(c => c.DateCreated).Format(value: "{0:yyyy/MM/dd HH:mm}");
col.Bound(c => c.Severity);
col.Bound(c => c.Title);
col.Bound(c => c.Text).ClientTemplate(string.Format("{0}...", "#= formatter(Text, 20) #"));
})
.DataSource(ds => ds.Ajax().Sort(sort => sort.Add(memberName: "DateCreated").Descending())
.Read(read => read.Route(MessageEventControllerRoute.PostReadForOperation, new RouteValueDictionary { { "operationId", "#=Id#" }, { "culture", UICulture.ToLower() } })))
.ToClientTemplate())
</text>
);
items.Add().Content(@<text>
@(Html.Kendo().Grid<OperationViewModel>().Name(componentName:"alternativesGrid")
.Columns(col => {
col.Bound(op => op.OperationIdFormatted);
col.Bound(op => op.EfficiencyRank);
col.Bound(op => op.WorkOrder.WorkOrderIdFormatted);
col.Bound(op => op.Length)
.ClientTemplate(value: "#if (data.Length) {# #:kendo.toString(Length.Hours, '00')#:#:kendo.toString(Length.Minutes, '00')#:#:kendo.toString(Length.Seconds, '00')# #}#")
.EditorTemplateName(templateName: "TimeSpan");
})
.DataSource(ds => ds.Ajax()
.Read(read => read.Route(OperationControllerRoute.PostOperationAlternatives, new RouteValueDictionary { { "workOrderId", "#=Operation.WorkOrderId#" }, { "seqNo", "#=Operation.SequenceNumber#" }, { "culture", UICulture.ToLower() } })).Model(m => m.Id(op => op.Id)))
.ToClientTemplate()
)</text>);
})
.ToClientTemplate())
</script>
由于我无法将模板 ID 传递给列模板,所以我不知道如何避免模板无效错误。
知道如何在这种情况下使用客户端模板吗?
问候 伯恩德
经过更多的试验,我找到了两个解决方案。
- 转义低级网格中的客户端模板。
正在使用
.ClientTemplate(value: "\#if (data.Length) {\# \#:kendo.toString(Length.Hours, '00')\#:\#:kendo.toString(Length.Minutes, '00')\#:\#:kendo.toString(Length.Seconds, '00')\# \#}\#")
而不是
.ClientTemplate(value: "#if (data.Length) {# #:kendo.toString(Length.Hours, '00')#:#:kendo.toString(Length.Minutes, '00')#:#:kendo.toString(Length.Seconds, '00')# #}#")
- 更改选项卡内容以按需加载。
唯一的问题是未调用 ajax 数据源。所以将模型传递给局部视图并删除
.ToClientTemplate()
说明。