В HTML амперсанд необходимо кодировать всегда, везде, также в значениях атрибутов (очевидно, что содержимое тега <script>
является заметным исключением). ASP.NET делает правильные вещи.
Значения атрибутов не будут закодированы браузером, прежде чем он фактически их использует. Таким образом, ваш атрибут onbeforeunload
имеет буквальное значение:
ajaxRequest('UnlockQuery.ashx?QueryID=176&UserID=11648');
в то время как HTML-представление должно иметь &
вместо &
. Браузер обычно также понимает плохо закодированную версию, но синтаксический анализатор SGML будет жаловаться на неизвестную / недействительную сущность с именем &UserID
.