在后面的代码中将页面控制从脚本传递到页面方法?

时间:2010-04-24 16:50:26

标签: c# asp.net javascript asp.net-ajax

我正在寻找一个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方法,并且它们不会被解雇。

有什么想法?我本能做错的事吗?

1 个答案:

答案 0 :(得分:2)

需要注意的几件事:

  • GetStuffs类返回void,因此OnSuccess或OnFailure不会触发
  • 即使您确实返回了某些内容,UI上的控件也不会更新,因为PageMethod只会向调用的javascript返回一个值,但不会以任何方式更新UI
  • 您需要在客户端上处理OnSuccess事件&然后更新客户端的下拉列表
  • 对服务器上的控件的任何更改都不会反映在使用PageMethods
  • 的客户端上
  • 另一点需要注意的是,你传回的是下拉列表的一个对象,它是一个DOM元素&将其转换为服务器端控件。这是不可能的。