问题描述
|
我必须对字符串进行编码以删除HTML元素的ID的括号。
括号(这些
(
,)
)在HTML ID中无效,是否可以使用标准字符串(例如URL中使用的字符串)?
有没有可以在ASP.NET MVC中使用的现有方法?
N.B. System.Web.Mvc.HttpUtility.HtmlEncode(string)
,不对括号进行编码。
解决方法
根据HTML规范(以及有关id的问题),HTML
id
属性中不允许使用括号。如果需要它们,可以使用字符串替换,例如:
// ( = \'op--\' Opening Parenthesis
// ) = \'cp--\' Closing Parenthesis
string id = \"collectionName.get_Item(index)\";
// encode
string encodedId = id.Replace(\"(\",\"op--\").Replace(\")\",\"cp--\");
// decode
string decodedId = encodedId.Replace(\"op--\",\"(\").Replace(\"cp--\",\")\");
, 我想我不明白这个问题,因为答案似乎是代替ѭ5和ѭ6。甚至您提供的Wikipedia链接中的%28
和%29
。
我握住了棍子的错误末端吗?
编辑:从评论中说出来,似乎%28
和%29
不合适,因为%
字符也是无效的,在这种情况下,您可以选择一个不会在其他地方出现的替代字。
EG诸如(
变为---28---
(甚至---openbracket---
),或者您可以保证不会在ID的其他位置出现的其他东西(应该是可能的)。
, 如果元素是动态创建的,那么为什么不对ID进行.Replace更改括号,例如下划线呢?
如果没有动态创建元素,那么为什么在id中加上括号?