我正在寻找一个在下拉列表更改值时调用的 javascript 方法
function GetStuff(sender, destID){
var dest = document.getElementById(destID);
this.PageMethods.GetStuffs(sender, dest, null, null);
}
GetStuffs()在Codebehind中如下:
[WebMethod]
public static void GetStuffs(object sender, object dest)
{
DropDownList s = sender as DropDownList;
DropDownList d = dest as DropDownList;
d.Items.Add(new ListItem(s.SelectedValue));
}
我在方法中设置了一个断点,并在 GetStuff() jscript 方法中发出警报,直到调用 PageMethod 为止,此时什么也没有发生。我已经为 OnSuccess 和 OnFailure 方法设置了警报,但它们没有被触发。
有什么想法吗?我做错了什么吗?
最佳答案
需要注意的几点:
- GetStuffs 类返回无效,因此不会触发 OnSuccess 或 OnFailure
- 即使您确实返回了一些东西,UI 上的控件也不会更新,因为 PageMethod 只是向调用 javascript 返回一个值,但无论如何都不会更新 UI
- 您需要处理客户端上的 OnSuccess 事件,然后更新客户端上的下拉列表
- 对服务器上控件的任何更改都不会反射(reflect)在使用 PageMethods 的客户端上
- 另一点需要注意的是,您正在传回下拉列表的一个对象,该对象是一个 DOM 元素并将其转换为服务器端控件。这是不可能的。
关于c# - 将页面控制从 jscript 传递到代码隐藏中的 pagemethod?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2705302/