You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kendo Grid内联ItemTemplate报SyntaxError非法字符问题求助

排查Kendo Grid自定义筛选ItemTemplate语法错误的方法

我来帮你一步步拆解这个SyntaxError: illegal character的问题,核心是模板里的JavaScript语法和字符串拼接出了问题,咱们逐个排查:

1. 修复最直接的语法错误:赋值操作误用

你模板里写的StatusId = 1是赋值语句,而不是判断相等的条件——JavaScript里判断相等必须用==(宽松相等)或者===(严格相等)。这个错误会直接导致JS引擎解析失败,是触发报错的最可能原因。

2. 安全传递C#枚举值到客户端模板

你直接把C#枚举的ToString()结果拼进模板字符串里,如果枚举值包含空格、特殊字符,或者和模板的引号嵌套冲突,就会破坏语法结构。建议用@Html.Raw(Json.Encode(...))来自动转义枚举值,确保它在客户端被解析为合法的JavaScript字符串:

.Filterable(ftb => ftb.Multi(true)
    .ItemTemplate(@"
        #if (StatusId === 1) {#
            @Html.Raw(Json.Encode(Enums.PublicationStatus.New.ToString()))
        #}#
        // 可继续添加其他StatusId的判断分支
    ")
    .CheckAll(false)
    .BindTo(new[] { 
        // 确保数据源每个项都包含StatusId属性
        new { StatusId = 1, Text = Enums.PublicationStatus.New.ToString() },
        new { StatusId = 2, Text = Enums.PublicationStatus.Published.ToString() }
    })
)

3. 检查模板的引号嵌套与语法完整性

  • 如果你用双引号包裹整个模板字符串,内部的字符串要改用单引号,或者反过来,避免提前闭合引号;
  • 确保模板里的#分隔符和JavaScript代码块(比如if的大括号)完全闭合,没有遗漏。

4. 排查隐藏的特殊字符

有时候复制粘贴的代码会带有不可见的全角空格、非标准字符,这些也会触发illegal character错误。你可以把模板里的JavaScript部分单独复制到浏览器控制台里测试,验证语法是否合法。

5. 验证BindTo的数据源结构

确保你BindTo里的每个对象都确实包含StatusId属性,且属性名大小写完全一致(JS是大小写敏感的)——虽然这不会直接导致语法错误,但会影响模板的最终渲染结果。

内容的提问来源于stack exchange,提问作者Kar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:51:30