2013-05-07 4 views
0

Я создаю страницу, которая позволяет пользователям удалять значения из существующего списка на сервере, а затем сохранять новый список (со значениями, удаленными) на сервер.Сохранение значений на странице на сервере

У меня есть функция javascript, получающая правильные значения, мне просто не удается вернуть обновленный список на сервер. Чтобы убрать вещи, у меня есть viewstatemode = "disabled".

Я видел различные способы выполнения javascript от клиентов.

Что мне интересно, возможно ли иметь кнопку, которая вызывает функцию javascript, получает значение, которое оно возвращает (или сохраняет в каком-либо поле где-то), все до того, как страница переходит через функции OnInit, OnLoad ?

ответ

0

Я не хочу выглядеть как осел и ответить на мой собственный вопрос, но в интересах помочь кому-то, кто натыкается на это:

Я так решать эту проблему с помощью OnClientClick атрибут элемента управления asp: Button. Это позволяет вам вызывать функцию javascript клиента (очевидно), но, что более важно, она позволяет выполнять код до начала жизненного цикла страницы.

<asp:Button runat="server" ID="btnSave" Text="Save" onclick="btnSave_Click" OnClientClick="saveCurrentList();" /> 

saveCurrentList(); - это функция javascript, которая у меня есть в голове моей страницы aspx, которая собирает значения на странице (которые были изменены с помощью javascript и причина, по которой мне это нужно было до того, как страница была отправлена ​​назад). Я сохранил его в поле (используя jQuery) и сохранил его в поле, используя его val(); Метод:

function saveCurrentList() { 
     var list = $("#currentList a").map(function() { 
      return $(this).text(); 
     }).get(); 
     $("#hdnCurrentList").val(list.join(",")); 
    } 

Используя эти методы, я мог бы Javascript сохранить значения в скрытом поле перед постбэка, а затем восстановить их ServerSide для обработки.

1

создать скрытое поле, как показано ниже

<input type="hidden" ID="hfid" /> 

установить значение от JavaScript

document.getElementById("hfid").value = "value to set"; 

вы можете получить к нему доступ с сервера, как показано ниже

string fromclient = Request.Form["hfid"]; 
+0

На самом деле это не отвечает на вопрос и это просто пересмотр других ответов на SO по этой теме. Кроме того, он не работает; не знаю, связано ли это с тем, что у меня отключена ViewState, и вы включили ее или нет. – BrDaHa

+0

Внимательно изучив ее, причина, по которой она не работает, связана с тем, что вы капитализировали значение, когда оно должно быть строчным: значение в противном случае просто создайте новую переменную в скрытом полевом объекте: [Ссылка] (http://stackoverflow.com/questions/2687014/setting-hidden-input-value-in-javascript-then-accessing-it-in-codebehind/2687024 # 2687024) – BrDaHa

+0

@BrDaHa Да, это должно быть 'значение' JavaScript чувствителен к регистру – Damith

0

Я согласен с предыдущим ответом (т.е. сохранение значения в скрытом поле). Это также может быть достигнуто с помощью файлов cookie (постоянных или непостоянных). С уважением, А. Б.

+0

Возможно, это может быть выполнено с использованием файла cookie ... – BrDaHa