C# 从静态[WebMethod](JS ajax调用)访问ASP.NET控件

C# 从静态[WebMethod](JS ajax调用)访问ASP.NET控件,c#,asp.net,ajax,user-controls,pagemethods,C#,Asp.net,Ajax,User Controls,Pagemethods,我有一个ASP.NET网站和一个自定义控件(我们称之为myControl)。 我需要用AJAX在这个控件上调用一个方法。 我正在发布从JavaScript(jQuery)到C#WebMethod的ajax调用。 这很好,但我无法在静态WebMethod中访问myControl。 有没有办法解决这个问题 简短版本: 从JS到C#WebMethod的AJAX调用有效->*这里(在这个方法中),我需要在我的自定义控件上调用一个方法,该方法由于静态方法类型而无法访问* [WebMethod] publi

我有一个ASP.NET网站和一个自定义控件(我们称之为myControl)。 我需要用AJAX在这个控件上调用一个方法。 我正在发布从JavaScript(jQuery)到C#WebMethod的ajax调用。 这很好,但我无法在静态WebMethod中访问myControl。 有没有办法解决这个问题

简短版本: 从JS到C#WebMethod的AJAX调用有效->*这里(在这个方法中),我需要在我的自定义控件上调用一个方法,该方法由于静态方法类型而无法访问*

[WebMethod]
public static List<CustomListControl.IListItem> GetListItems()
{
    // CAN'T GET TO MY CONTROL - need to return myContorl.Items;
    return null;
}
[WebMethod]
公共静态列表GetListItems()
{
//无法控制-需要返回myContorl.Items;
返回null;
}

嗯,这不是正确的方法。在web服务方法级别,您看不到关于页面结构的任何信息。在此方法中,您只能加载项目列表并返回它。此列表绑定到的位置与GetListItems无关


您可以通过实现回调函数(例如,请参见)或使用UpdatePanel方法来管理项目的显示。

我不确定我们是否相互理解:)我必须实现一个同步列表(客户端列表必须与服务器上的列表相同),因此每次更改都必须发布到服务器。例如,我想用ajax删除一些项目——用户删除列表中的一个项目,ajax调用自定义控制方法,该方法在服务器上的列表中删除该项目。[WebMethod]应该类似于代理或中介:JS ajax调用*.aspx method->此方法调用customControlI上的方法我错误地编写了一个web服务方法,但这并没有改变参数:)。只要您使用WebMethod,就无法访问该级别的控件。您可以管理上下文对象、会话等,也可以调用外部库,但仅此而已。
您只有两种方法可以完成所需的操作:
1-使用UpdatePanel(删除JQuery调用)。使用此解决方案,您可以像在完整的回发场景中一样,通过该方法管理控件。2-将web方法的结果注入现有标记。还有一个问题-您知道通过UpdatePanel从JS调用CS文件中的方法的最佳方法吗?当controlID在控件本身中时,如何使用触发器?示例:用户单击一个链接,此链接应使用一些参数进行部分回发。。。我如何从JS做到这一点?简而言之:用户做点什么-js发挥了神奇的作用,然后应该使用updatePanel将(ajax)通道(一些参数)发布到服务器-如何从js实现这一点?再次感谢……一旦将需要异步更新的控件放入一个或多个UpdatePanel中,就不需要JS函数直接调用这些方法。您可以像平常一样分配一个EventHandler,框架将完成其余的工作。你可以在这里找到一个相当简单的教程:嗯,我有点理解,但我不确定这是否有效。我有一个自定义控件,它有一个项目列表(带有拖放jQuery、内联编辑等)。如何从UpdatePanel(EventHandler)捕获这些事件?我是否使用customControl具有的事件中的EventName分配触发器?可能重复