将信息从JS传递到ASP服务器端

时间:2009-05-27 03:08:30

标签: javascript asp.net ajax postback

我一直试图以某种方式获取我的javascript函数(我在aspx页面的head部分中)在隐藏项中设置一个值,然后一些如何拥有服务器端(可靠的'ol ASP)读取该数据,以便我可以根据它是什么来做一些工作。我将整个页面都包含在更新面板中,我的拖放问题大部分已经解决了。理想的情况是拥有它所以一旦一个对象被丢弃在drop区域,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 :(得分:0)

如果您想要回发隐藏的输入,您需要提供名称和ID。只有带有名称的输入才会与发布的表单一起发送。您可能希望将其设置为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());

}