У меня есть два раскрывающихся списка:жерех: DropDownList - недопустимый постбэк или аргумент обратного вызова при добавлении параметров с помощью JavaScript/JQuery
<asp:DropDownList ID="Field_Type" runat="server" />
<asp:DropDownList ID="Field_SubType" runat="server" />
Field_Type
является привязкой к данным, со списком типов, заполняется из базы данных. Field_SubType
устанавливается через jQuery/AJAX при изменении Field_Type
. Затем я добавляю опцию, используя $("#<%# Field_SubType.ClientID %>").append("<option value=\"1\">Test</option>");
. Это работает так, как ожидалось (я вижу добавленный новый подтип).
Однако при отправке обратно после выбора варианта, который был добавлен, я получаю сообщение об ошибке:
Invalid postback or callback argument. Event validation is enabled using in configuration or <%@ Page EnableEventValidation="true" %> in a page. For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them. If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation.
Что может быть причиной этого, и как я мог работать вокруг него? Несколько идей у меня есть:
- Используй простой
<select>
и использоватьRequest.Form
- может быть проблемой, если она находится в пользовательском элементе управления используется несколько раз на странице - Populate
Field_SubType
со всеми подтипами, отфильтровывая те которые не являются подтипомField_Type
- это будет загружать больше данных, чем требуется, что добавит времени загрузки страницы
Другие варианты?
Rex, не это оставить весь сайт открыт для инъекции сценария? Я бы просто включил его на страницах, где используется элемент управления, и предоставляет дополнительную проверку для любых других входов на странице. –
@ Jim, полагая, что вы полагаетесь на это, чтобы пользователи не отправляли разметку, возможно. Но кто это делает;) –
@Jim Если вы только полагаетесь на проверку страницы, чтобы предотвратить XSS, у вас есть еще одна проблема.Используйте последнюю версию библиотеки AntiXSS для достижения лучшего уровня безопасности и запускайте CAT.NET, чтобы выявить возможные уязвимости. –