XML-теги в asp: TextBox предотвращает работу других элементов управления?
-
05-07-2019 - |
Вопрос
У меня есть ряд элементов управления на странице 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><foo> & <bar></textarea>
Хотя на практике браузеры обычно понимают, что вы имеете в виду, и отображают любые <
символы как есть, они по-прежнему являются недопустимым HTML и плохо сформированным XML (вероятно, это также корень вашей проблемы в ASP.NET хотя без конкретного кода это сложно сказать).