用于对HTML ID的括号进行编码的标准标记

本文关键字:编码 标准 HTML ID 用于 | 更新日期: 2023-09-27 17:59:17

我必须对字符串进行编码,以删除HTML元素Id的括号。

括号(())在HTML ID中无效,是否有标准字符串(如URL中使用的字符串)可供使用?

是否存在可以在ASP.NET MVC中使用的现有方法?

N.B.System.Web.Mvc.HttpUtility.HtmlEncode(string)不编码括号。

用于对HTML ID的括号进行编码的标准标记

根据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--", ")");

我想我不明白这个问题,因为感觉答案是用[]代替。甚至是你提供的维基百科链接中的%28%29

我抓错棍子了吗?

编辑:从评论中所说的来看,%28%29似乎不好,因为%字符也是无效的,在这种情况下,你可以选择一个不会出现在其他地方的替代品。

EG像(这样的东西变成了---28---(甚至---openbracket---),或者你可以保证不会出现在ID的其他地方(这应该是可能的)。

如果元素是动态创建的,那么为什么不在id更改括号上做一个.Replace来替换下划线呢?

如果元素不是动态创建的,那么为什么它们在id中有括号?!