Стандартный токен для кодирования скобок для идентификаторов HTML? - PullRequest
2 голосов
/ 15 июня 2011

Мне нужно закодировать строки, чтобы удалить скобки для идентификаторов для элементов HTML.

Скобки (эти (, )) недопустимы в идентификаторах HTML. Существуют ли стандартные строки (например, используемые в URL ) для использования?

Существует ли существующий метод, который можно использовать в ASP.NET MVC?

N.B. System.Web.Mvc.HttpUtility.HtmlEncode(string), не кодирует скобки.

Ответы [ 3 ]

3 голосов
/ 15 июня 2011

Согласно спецификации HTML (и этот вопрос о идентификаторах ) скобки не допускаются в атрибуте HTML id. Если они вам нужны, вы можете использовать замену строк, например ::1004

//  ( = '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--", ")");
1 голос
/ 15 июня 2011

Я не думаю, что понимаю вопрос, потому что кажется, что ответом является замена [ и ]. Или даже %28 и %29 по ссылке на Википедию, которую вы дали.

У меня не тот конец палки?

РЕДАКТИРОВАТЬ: Из того, что было сказано в комментариях, кажется, что %28 и %29 не в порядке, так как символ % также недопустим, в этом случае вы можете выбрать замену, которая не появится в другом месте.

EG Что-то вроде ( становится ---28--- (или даже ---openbracket---), или что-то еще, что вы можете гарантировать, не появится в другом месте в ID (что должно быть возможно).

0 голосов
/ 15 июня 2011

Если элементы создаются динамически, то почему бы просто не сделать .Replace для id, изменяя круглые скобки, скажем, для подчеркивания?

Если элементы не создаются динамически, тогда почему они имеют круглые скобки в идентификаторах?!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...