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

StackOverflow https://stackoverflow.com/questions/1603700

Вопрос

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

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

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

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

Это было полезно?

Решение

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

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

ValidateRequest="false"

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top