Передача информации из JS на ASP-сервер - PullRequest
0 голосов
/ 27 мая 2009

Я пытался каким-то образом заставить мою функцию javascript (которая есть в разделе заголовка страницы aspx) установить значение в скрытом элементе, а затем каким-то образом на стороне сервера (верный ASP) читать эти данные, чтобы я мог сделать некоторую работу в зависимости от того, что это такое. Вся моя страница обернута в панель обновлений, и мои проблемы перетаскивания в основном были решены. Идеальной ситуацией было бы, чтобы после того, как объект был отброшен в зону удаления, кусок кода javascript (я сосу на JS) назначит значение скрытому полю, а затем заставит панель обновления выполнить одну из своих асинхронных обратных передач. и обновите себя (что будет извлекать данные из функции, которая запускается на основе скрытого значения). Вот что у меня есть для моего текущего (сломанного) раздела JavaScript:

<script type="text/javascript">  
  $(document).ready(function() {  
doReady();  

var prm = Sys.WebForms.PageRequestManager.getInstance();  
prm.add_endRequest(function(s, e) {  
    doReady();  
});  
}); 

Все вышеперечисленное позволяет сделать так, чтобы JQuery не мешал себе после постбэка

function doReady() {

$('.drag').draggable({ revert: true, helper: 'clone' });
$('.drop').droppable({
    tolerance: "touch", // Here should be a string
    drop: function() {

        $('#myHidden').val('Testy test test');
        __doPostBack('<%= HiddenButton.UniqueID  %>', '');
        alert(#myHidden.val);

    }


});

} // End of do ready
</script>

А вот соответствующая часть ASPX, в которой есть таинственная штука "myHidden".

<input type="hidden" id="myHidden" />
<asp:Button ID="HiddenButton" runat="server" Text="Button" />   

Я делаю что-то не так в своем разделе javascript, или у меня есть полное представление об этом fubar?

Спасибо! Билл

1 Ответ

0 голосов
/ 27 мая 2009

Если вы хотите, чтобы скрытый ввод был отправлен обратно, вам нужно указать имя и идентификатор. Только входы с именами отправляются с размещенной формой. Возможно, вы захотите сделать его asp: HiddenField, чтобы вы могли легко получить его значение на стороне сервера, хотя вы также можете получить его из коллекции Request.Form.

<asp:HiddenField runat="server" id="myHidden" />

Измените свой JavaScript на:

drop: function() {

    $('[id$="myHidden"]').val('Testy test test');
    __doPostBack('<%= HiddenButton.UniqueID  %>', '');
    alert($('[id$="myHidden"]').val());

}
...