Отключить кодировку HTML на атрибутах HypLink Asp.net - PullRequest
0 голосов
/ 15 февраля 2011

У меня есть HyperLink в моем пользовательском контроле, в котором я динамически устанавливаю событие onlick на стороне сервера, например:

this.Attributes["onclick"] = string.Format("javascript:alert('{0}')", base.NavigateUrl);

Проблема в том, что когда Asp.net отображает страницу, она заканчиваетсяс чем-то вроде этого

<a href='...' onclick="javascript:alert(&#39;TEST&#39;)>LINK</a>

, который, очевидно, не является допустимым Javascript.Использование " вместо ' также не поможет, сгенерированный HTML будет alert(&quot;TEST&quot;)

Есть ли способ обойти это?

Спасибо.

Ответы [ 3 ]

3 голосов
/ 15 февраля 2011

onclick="javascript:alert(&#39;TEST&#39;)" совершенно правильно.Когда страница анализируется, сущности должны быть заменены их аналогами, прежде чем JavaScript обработает значение.Таким образом, на этапе 1 анализатор HTML изменит значение атрибута на javascript:alert('TEST');, что является допустимым JavaScript.

1 голос
/ 10 апреля 2012

Не работает при использовании Jquery.

Серверная сторона:

this.Attributes["onclick"] = "$('#button').click();";

Клиентская сторона:

onclick="$(&amp;#39;#button&amp;#39;).click();" gives an error.

Есть ли в любом случае просто получить "настоящие" одинарные кавычки на стороне клиента?

0 голосов
/ 11 сентября 2013

royu,

К сожалению, Microsoft считает, что это «функция безопасности», и им на самом деле не важна совместимость с браузером или JavaScript.Один из способов переопределить это - использовать Eval ([string]) вместо простого текста.В этом случае значение не должно быть закодировано.

...