Как получить событие SelectedIndexChanged, когда DropDownList заполняется на стороне клиента?"
Я создал простой пример, который вызывает WebMethod с помощью метода post ajax и получает данные со стороны сервера. Все работает нормально, кроме его SelectedIndexChanged
событие.
Ошибка говорит:
Описание: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Детали исключения: System.ArgumentException: Invalid postback or callback argument. Event validation is enabled using <pages enableEventValidation="true"/> 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.
Я также читал некоторые решения, но я не хочу использовать панель обновления и не хочу заполнять ее на стороне сервера. Как norbertB предположил, что отключать проверку событий плохая идея, потому что вы теряете немного безопасности, что приходят с очень небольшими затратами
Я знаю, что viewstate не будет обновляться, когда я заполняю раскрывающийся список со стороны клиента. Итак, что я должен сделать, чтобы решить эту проблему?
Мой код прост
Сторона сервера
<Services.WebMethod>
Public Shared Function getDDL() As ArrayList
Dim arr As New ArrayList
arr.Add(New DDLCls(1, "Nimesh"))
arr.Add(New DDLCls(2, "Rahul"))
arr.Add(New DDLCls(3, "Hiren"))
arr.Add(New DDLCls(2, "Dipak"))
Return arr
End Function
Сторона клиента
$.ajax({
type: 'POST',
url: 'Default.aspx/getDDL',
data: '{}',
contentType: 'application/json; charset=utf-8',
datatype: 'json',
success: function (data) {
$.each(data.d, function (index, item) {
$('#ddl').get(0).options[$('#ddl').get(0).options.length] = new Option(item.Display, item.Value);
});
},
error: function (data) {
alert('Error on web method call: ' + data);
}
}
);
ASP.NET Code
<asp:DropDownList ID="ddl" runat="server" AutoPostBack ="true" EnableViewState="false"></asp:DropDownList>
<input type="button" id="btnDate" onclick="getDate()" value="Get Date" />
У меня вопрос "Возможно ли получить SelectedIndexChanged
событие, когда DropDownList
заселено на стороне клиента?