Теги XML в asp: TextBox мешают работе других элементов управления?

У меня есть ряд элементов управления на странице ASP. Некоторые из них находятся внутри UpdatePanel, а некоторые нет.

Если я помещу тег XML в одно из текстовых полей (например, "<foo>"), то все элементы управления в UpdatePanel не будут работать. Как только теги удаляются, все нормально.

Моя кнопка «Отправить» находится в UpdatePanel, а точка останова на btnSubmit_Click срабатывает только тогда, когда в текстовых полях нет тегов.

Я давний разработчик С#, но совершенно новичок в ASP.NET, поэтому могу упустить что-то очевидное... это просто не то поведение, которое я ожидаю.


person Rich Stokoe    schedule 21.10.2009    source источник
comment
Итак, теги не разрешены. (например, ) следует читать (например, [opentriangularbracket]foo[closetriangularbracket])   -  person Rich Stokoe    schedule 22.10.2009


Ответы (2)


Если вы уберете UpdatePanel со страницы, вы обнаружите, что обратная передача вызывает ошибку, потому что .NET считает, что «‹foo›» является потенциально опасным битом данных для приема на сервере. См. этот вопрос на StackOverflow. Вы не видите ошибку, потому что HTML-код страницы с ошибкой возвращается в вызов ajax UpdatePanel, а не напрямую в ваш браузер, и UpdatePanel не знает, что с ним делать.

Вы можете отключить проверку, добавив

ValidateRequest="false"

к директиве ‹@Page ... > в верхней части файла aspx. Или вы можете изменить файл web.config, чтобы добиться того же эффекта во всем веб-приложении.

person d4nt    schedule 21.10.2009

Вы не можете поместить разметку в текстовую область. Вы должны HTML экранировать любые символы разметки внутри textarea так же, как и с любым другим элементом.

<textarea>&lt;foo> &amp; &lt;bar></textarea>

Хотя на практике браузеры обычно понимают, что вы имеете в виду, и отображают любые символы < как есть, это все еще недопустимый HTML и неправильно сформированный XML (предположительно, это также является корнем вашей проблемы в ASP.NET, хотя и без специального кода трудно сказать).

person bobince    schedule 21.10.2009
comment
Я думаю, он имеет в виду, что он вводит тег в текстовое поле, когда страница запущена, что затем приводит к тому, что страница перестает работать до тех пор, пока тег не будет удален. - person Jason Berkan; 22.10.2009
comment
Привет bobince, спасибо за ответ. Джейсон прав, проблема возникла во время выполнения (которую я действительно не прояснил). Извините, но еще раз спасибо. - person Rich Stokoe; 22.10.2009