【发布时间】:2017-07-27 20:34:58
【问题描述】:
我在我的 mvc razor 应用程序中使用 kendo gird 来实现多级详细信息行扩展功能。为了让每个网格都有唯一的名称,我有一些固定的文本加上行的唯一 ID
例如
@(Html.Kendo().Grid<MyModal>()
.Name("topGrid_#=uniqueKeyColumnValue#")
然后在行展开单击时,我知道必须通过传递这个带有硬编码前缀的 uniqueKeyColumnValue 来获取哪些详细的网格数据。到目前为止一切都很好,但现在我被告知在某些值中有一些特殊字符,例如“&”运算符,当我通过将其前缀与 uniqueKeyColumnValue 连接来构造详细网格名称时
例如
var idKey = e.sender.dataItem(e.masterRow).uniqueKeyColumnValue;
var detailedGridName = '#detailedGrid' + idKey;
var detailedGrid = $(detailedGridName).data("kendoGrid");
我收到以下错误
0x800a139e - JavaScript 运行时错误:语法错误,无法识别的表达式:#
在这一行
var detailGrid = $(detailedGridName).data("kendoGrid");
这显然是因为 idKey 中的 & 运算符,例如N&12345
我无法选择为网格提供硬编码名称。有什么建议吗?
【问题讨论】:
-
最好使用
_或-而不是&以避免在选择器中转义特殊字符。查看转义规则:api.jquery.com/category/selectors -
我不能。数据与这些字符一起存储。即使我用 _ 替换,它也可能会导致另一个挑战,即将它们恢复为检索相关密钥。虽然,我可以完全构建一个单独的字段,并通过将 & 替换为 _ 来分配修改后的值,并将其用作网格名称并保留实际的键列值。
标签: javascript asp.net-mvc razor kendo-grid kendo-asp.net-mvc