【问题标题】:Passing page control from jscript to pagemethod in the codebehind?在后面的代码中将页面控件从 javascript 传递给页面方法?
【发布时间】:2010-04-24 16:50:25
【问题描述】:

我正在寻找一个在下拉列表更改值时调用的 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 方法,它们不会被触发。

有什么想法吗?我做错了什么吗?

【问题讨论】:

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


    【解决方案1】:

    注意事项:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多