c# - 将页面控制从 jscript 传递到代码隐藏中的 pagemethod?

标签 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 方法设置了警报,但它们没有被触发。

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

最佳答案

需要注意的几点:

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

关于c# - 将页面控制从 jscript 传递到代码隐藏中的 pagemethod?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2705302/

相关文章:

c# - Multi-Tenancy 用户模型

c# - c#中的窗体加载

asp.net - 为什么设置 @Page masterPageFIle 时不隐含 @MasterType 指令?

c# - 网址不是有效的虚拟路径

javascript - 对每个带有 class/id 的 div 使用 ajax

c# - 在 C# 中使用默认泛型值

c# - Ping 和通用结构 C# - Visual Studio 2010

asp.net - UpdateProgress 不适用于触发器属性内的按钮

javascript - "Undefined is not a function"调用 Backbone 集合的获取函数时出错

javascript - 如何优化这个 jquery 循环的执行时间?