我在为 Kendo 网格中的列定义 ASP.NET MVC ClientTemplate 时遇到问题,因为“+”符号被删除,这会导致客户端生成的模板因语法错误而失败。
我的客户端模板是:
c.Template(@<text></text>).ClientTemplate("#='Hello' + Name#")
但是,在客户端中,这会减少为:
template: "#='Hello' Name#"
即加号已被渲染为空格(我猜类似于 URL 编码)。如果我直接从 JS 使用,该模板可以完美运行(请参阅此 JSBin )。
有谁知道如何转义 + 号以便我可以在 ClientTemplate 中使用它?
我尝试使用“\\+
”(呈现为“\
”)、“\+
”(无效的 C# )、+
(与 +
相同,但其他如 ,
' 工作正常)。
有什么想法吗?谢谢。
作为引用,我正在使用 Razor 标记和 2012 年第 2 季度 Kendo 版本(由于我们从 Telerik 升级,因此还无法使用第 3 季度,因为受到 jQuery 版本的限制)
注意:在有人问我为什么这样做之前,我的 ClientTemplate 实际上更复杂,但这是一个说明问题的简化示例:-)
最佳答案
我检查了源代码1,MVC 包装器在将所有模板呈现给 JS 之前调用 HttpUtility.UrlDecode
。因此,要转义 + 号(或任何其他保留的 URL 字符),请使用 percent encoding 。在本例中%2B
。
c.Template(@<text></text>).ClientTemplate("#='Hello' %2B Name#")
1 v2013.3,src\Kendo.Mvc\Kendo.Mvc\UI\Grid\Columns\GridColumnBase.cs,第 135 行。我怀疑这是一个错误,他们打算调用 HttpUtility.UrlEncode
。
关于asp.net-mvc-4 - 在 Kendo 网格 ASP.NET MVC ClientTemplate 中转义 +(加号)符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14384183/