работа с вложенными кавычками в HTML, сгенерированном из C # - PullRequest
2 голосов
/ 08 февраля 2010

Я использую стороннюю библиотеку для отображения всплывающих подсказок, например:

string tooltip = "test";
output.Write("onmouseover='Tip(\"" + test + "\");'");  // work fine :)

У меня проблема с такими ситуациями, как следующие, где мне нужны кавычки для форматирования:

string tooltip = "<span style='color:red;'>test</span>";
output.Write("onmouseover='Tip(\"" + test + "\");'");  // no working :(

как я могу избежать кавычек, необходимых для HTML в подсказке, чтобы он не прерывал вызов функции?

Ответы [ 2 ]

2 голосов
/ 08 февраля 2010

Это идеальное использование для библиотеки Microsoft Anti-Xss

С его помощью вы вызываете функцию JavaScriptEncode, которая создаст строку, подобную этой:

Microsoft.Security.Application.AntiXss.JavaScriptEncode("ab'c\"d")
// 'ab\x27c\x22d'

Обратите внимание, что включает в себя кавычки .

Вы бы взяли это, закодировали в HTML и вставили прямо в скобки.

Примерно так:

string tooltip = "<span style='color:red;'>test</span>";
output.Write("onmouseover=\"Tip(" + AntiXss.JavaScriptEncode(test) + ");\"");  // working :)
2 голосов
/ 08 февраля 2010

Замените любой экземпляр " на &quot; следующим образом:

test.Replace( "\"", "&quot;" )
...