Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / HiddenField / 16 сообщений из 16, страница 1 из 1
04.06.2015, 13:11
    #38976155
Программист 3 поколения
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HiddenField
На странице есть HiddenField, значение которого меняется на стороне клиента javascript-ом.

При попытке получить значение поля на стороне клиента и вывести его значение:
Код: c#
1.
tbTest.Text = Test_HiddenField.Value.ToString();



Получаю ошибку:
Код: c#
1.
2.
3.
4.
5.
Недействительный аргумент обратной передачи или обратного вызова.  Проверка события включена с помощью 
<pages enableEventValidation="true"/> в конфигурации или <%@ Page EnableEventValidation="true" %> на странице.  
В целях безопасности эта функция проверяет, что аргументы для событий обратной передачи или обратного вызова поступают 
из элемента управления сервера, сформировавшего их изначально.  Если данные действительные и ожидавшиеся, 
используйте метод ClientScriptManager.RegisterForEventValidation, чтобы зарегистрировать данные обратной передачи и обратного вызова для проверки.



Если отключить enableEventValidation, то всё работает, неужели по-другому никак?
...
Рейтинг: 0 / 0
04.06.2015, 13:17
    #38976165
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HiddenField
Программист 3 поколения,
И какой ID и Name у HiddenField? Не "ID" случайно?
...
Рейтинг: 0 / 0
04.06.2015, 13:22
    #38976171
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HiddenField
Вообще думаю, что проблема скорее всего в том, что HiddenField сидит внутри родительского контрола, в markup'е которого явно прописано Visible="false". А это нужно делать динамически в codebehind на байндинге.
...
Рейтинг: 0 / 0
04.06.2015, 14:00
    #38976229
Программист 3 поколения
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HiddenField
AxeleronПрограммист 3 поколения,
И какой ID и Name у HiddenField? Не "ID" случайно?
Код: c#
1.
2.
<asp:Content ID="Content1" ContentPlaceHolderID="content" Runat="Server">
<asp:HiddenField id="Test_HiddenField" ClientIDMode="Static" runat="server" Value="123"/>
...
Рейтинг: 0 / 0
04.06.2015, 14:05
    #38976239
Программист 3 поколения
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HiddenField
AxeleronВообще думаю, что проблема скорее всего в том, что HiddenField сидит внутри родительского контрола, в markup'е которого явно прописано Visible="false". А это нужно делать динамически в codebehind на байндинге.
Не в этом, вот что заметил.

Если считываю значение:
Код: c#
1.
tbTest.Text = Test_HiddenField.Value.ToString();

без изменения, то прекрасно считывается значение по-умолчанию - "123".

А если значение поля изменить на клиенте скриптом:
Код: javascript
1.
document.getElementById('Test_HiddenField').setAttribute("Value", "1");


То при попытке считывания получаю указанную в первом посте ошибку.
...
Рейтинг: 0 / 0
04.06.2015, 14:17
    #38976256
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HiddenField
Программист 3 поколения,
А value скрытого поля может принимать любые значения? Или только что-то либо "0" и "1" (известные заранее)?
...
Рейтинг: 0 / 0
04.06.2015, 14:21
    #38976261
Программист 3 поколения
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HiddenField
Axeleron,

Любые известные. )
На странице созданный на стороне клиента select, в скрытое поле буду помещать value выбранного пункта,
который в свою очередь всегда положительное число, поэтому тестировал на числах.
...
Рейтинг: 0 / 0
04.06.2015, 14:24
    #38976265
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HiddenField
В общем, если ответ на мой второй вопрос "Да", то тогда так:
Код: c#
1.
2.
3.
4.
5.
6.
protected override void Render(HtmlTextWriter writer)
{
    ClientScript.RegisterForEventValidation(Test_HiddenField.ID, "0");
    ClientScript.RegisterForEventValidation(Test_HiddenField.ID, "1");
    base.Render(writer);
}


Если ответ нет, то варианта 2:
1) Использовать AJAX вместо ScriptManager
2)
Код: plaintext
1.
<%@ Page EnableEventValidation="false" %>
...
Рейтинг: 0 / 0
04.06.2015, 14:25
    #38976267
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HiddenField
Программист 3 поколенияAxeleron,

Любые известные. )
На странице созданный на стороне клиента select, в скрытое поле буду помещать value выбранного пункта,
который в свою очередь всегда положительное число, поэтому тестировал на числах.
Если из Select'a, тогда можно зарегистрировать все возможные значения в нем как я привел пример выше.
...
Рейтинг: 0 / 0
04.06.2015, 14:30
    #38976277
Программист 3 поколения
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HiddenField
AxeleronЕсли из Select'a, тогда можно зарегистрировать все возможные значения в нем как я привел пример выше.

Зарегистрировал значение из теста:
Код: c#
1.
2.
3.
4.
5.
6.
 protected override void Render(HtmlTextWriter writer)
    {
        ClientScript.RegisterForEventValidation(TextBox_pvz_id.ID, "1");
        ClientScript.RegisterForEventValidation(TextBox_pvz_id.ID, "123");
        base.Render(writer);
    }


Значение по-умолчанию также успешно считается, после изменения на стороне клиента ошибка (также).
...
Рейтинг: 0 / 0
04.06.2015, 14:32
    #38976279
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HiddenField
Программист 3 поколения,
Нужно регистрировать для HiddenField, в которое javascript'ом меняется значение выбранное из селекта.
...
Рейтинг: 0 / 0
04.06.2015, 14:38
    #38976291
Программист 3 поколения
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HiddenField
Axeleron,

Код: c#
1.
2.
3.
ClientScript.RegisterForEventValidation(Test_HiddenField.ID, "1");
        ClientScript.RegisterForEventValidation(Test_HiddenField.ID, "123");
        base.Render(writer);


Не работает.
...
Рейтинг: 0 / 0
04.06.2015, 14:41
    #38976302
Программист 3 поколения
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HiddenField
Axeleron,
Ещё попробовал:
Код: c#
1.
ClientScript.RegisterHiddenField(Test_HiddenField.ID, "1");


Не помогло.
...
Рейтинг: 0 / 0
04.06.2015, 14:48
    #38976310
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HiddenField
Программист 3 поколенияНе помогло.

Тогда остаются только последние два варианта...
...
Рейтинг: 0 / 0
14.07.2015, 17:19
    #39007194
Программист 3 поколения
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HiddenField
Axeleron,

Спасибо!
...
Рейтинг: 0 / 0
14.07.2015, 17:45
    #39007225
handmadeFromRu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HiddenField
Код: c#
1.
document.getElementById('<% Test_HiddenField.ClientID %>').setAttribute("Value", "1");
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / HiddenField / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]