【发布时间】:2014-08-28 07:07:55
【问题描述】:
我有一个 ajax 绑定的 Kendo UI 网格,我正在使用类似代码在客户端模板中构建一个选择列表-
<select name='@propertyName' required='@required'>
# for (var t = 0, length = 7; t < length; t++) {
console.log(t);
} #</select>
这显然不是完成的模板,而是一个精简的测试用例,用于修复导致浏览器选项卡崩溃(和/或被选项卡管理器捕获并停止 - 取决于在使用的浏览器上)。控制台中显示的“t”的值将继续无限增加,即使使用硬编码的长度值,如此处所示。
字符串作为 C# 字符串分配给 BoundColumnContainer 内的 ColumnSettings ClientTemplate 字符串属性(因为我们需要根据用户偏好对网格列进行排序)。它是在赋值之后和方法退出时(返回一个 Kendo UI GridBuilder 对象)完好无损(使用 ++)。
问题似乎是当模板被解码时,加号运算符在客户端被剥离,留下代码-
<select name='TemplateId'>
# for (var t = 0, length = 7; t < length; t ) {
console.log(t);
} #</select>
这是在脚本停止响应(未能及时退出循环)停止脚本后,使用 Firefox 开发工具从列对象中提取的。
显然,缺少的加号不会增加变量,这将导致循环永远不会退出,这与这里发生的情况一致。 Fiddler trace中的编码模板如下-
{"title":"Template","width":"166px","template":"\u003cselect
name=\u0027TemplateId\u0027\u003e# for (var t = 0, length = 7; t \u003c length;
t ) { console.log(t); } #\u003c/select\u003e",
"field":"TemplateId","filterable":{},"encoded":true}
请注意,这里 已经缺少 ++。
谁能建议我如何在模板中包含 ++ 而不会在编码过程中将其删除?
对于奖励积分,为什么 似乎 t 变量在 console.logging 循环内时正在递增?
【问题讨论】:
-
对于那些可能希望提出明显(和明智的问题)的人,t = t + 1 被呈现为 t = t 1,因此不提供解决方法。
标签: javascript kendo-ui asp.net-mvc-5 kendo-grid kendo-asp.net-mvc