Ошибка веб-формы Asp.net: неверный аргумент обратного или обратного вызова

<script type="text/javascript">
    var s = false;
    $(document).ready(function () {
        $("#btnSaveEducation").click(function () {
            s = true;
        });

        window.onload = function () {

            if (s == false) {
                var select = document.getElementById("year");
                for (var i = 2011; i >= 1900; --i) {
                    var option = document.createElement('option');
                    option.text = option.value = i;
                    select.add(option, 0);
                }
            }
        };
    });
</script>

....
...
<body>
 <asp:DropDownList ID="year" runat="server" name="year">
                        </asp:DropDownList>
</body>
....
..

Привет. В Asp.Net Web From я получаю это error когда я click btnSaveEducation:

[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.]

Зачем? Благодарю.

2 ответа

Решение

По умолчанию вы не можете добавить опцию в выпадающий список из jquery или java-скрипта.

Потому что Asp.net проверяет каждый элемент управления после обратной передачи.

Вы можете изменить директиву страницы следующим образом

<%@ Page ... EnableEventValidation="false" %>

что не приведет к проверке на стороне сервера, что не очень хорошо.

Если вы хотите достичь вышеуказанного, вы можете использовать html drop вниз и использовать hidden field и получить выбранное значение из hidden field вместо того, чтобы выпадать, это будет работать.

Подобный вопрос на SO

  1. asp.net: недопустимый аргумент обратной передачи или обратного вызова

Просто поместите этот код в ваш файл aspx:

если у вас уже есть что-то вроде <% @ Page... EnableEventValidation = "false"%>

Другие вопросы по тегам