【问题标题】:calling a VB.net function from javascript从 javascript 调用 VB.net 函数
【发布时间】:2010-10-28 16:04:42
【问题描述】:

我需要找到一种方法来从 javascript 调用我的 aspx 页面中的 vb.net 函数。我有一个使 .drop 类成为 .droppable 的 Jquery 函数,每当我将 .draggable 拖放到放置目标上时,我的 Jquery 代码都会成功触发 java 警报语句。全部使用纯 JavaScript。我需要做的是一些繁重的数学运算!

我明白 javascript 存在于客户端,ASP/VB 存在于服务器端,两者永远不会相遇。从谷歌研究来看,完成我需要做的事情的理想方法似乎是在我的更新面板中触发异步回发。我创建了一个名为“HiddenButton”的隐藏按钮,还创建了一个名为“HiddenLabel”的隐藏标签。如何让它工作,所以当我删除某些东西时,我的 javascript 会调用一些东西来更新 HiddenLabel 中的文本(这样我就可以将一个值传递给服务器端),并以某种方式触发 HiddenButton_click 事件?

我目前的 javascript 优点如下所示:

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

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

function doReady() {

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

这是我认为需要去更新标签并触发回发的地方,但我不知道它是什么:(

});

} // End of do ready
</script>

【问题讨论】:

  • 您也可以使用 WebForm_DoPostBackWithOptions javascript 函数来代替 __doPostBack。

标签: jquery asp.net ajax vb.net callback


【解决方案1】:

您可以使用隐藏变量的 OnValueChanged 事件。连接那个事件,改变隐藏变量的值,然后写这个语句 -

__doPostBack('<%= hdnHidden.UniqueID  %>', ''); //This statement will fire the OnValueChanged event and the control will be moved to the server side where you can update the label and do your processing.

【讨论】:

  • 成功了!我将我的 javascript 行更新为: drop: function() { __doPostBack('', '');现在我只需要弄清楚如何在我的网站上做更多的工作,但这正是我所需要的!
【解决方案2】:

使用 JS 调用 __doPostBack 会导致页面回发。

function __doPostBack(eventTarget, eventArgument) { ... }

【讨论】:

  • 我把我的javascript改成了这个,现在拖拽功能坏了? function doReady() { $('.drag').draggable({ revert: true, helper: 'clone' }); $('.drop').droppable({ tolerance: "touch", // 这里应该是一个字符串 drop: function() { alert('dropped'); } drop: function() { __doPostBack(HiddenButton_Click, '' ) } }); } // 准备结束