C# 在用户控件中写入页面方法有效吗?

C# 在用户控件中写入页面方法有效吗?,c#,jquery,ajax,C#,Jquery,Ajax,我正在使用.net/c#开发一个web应用程序。我有一个用户控件,我想使用javascript从客户端调用它的页面方法。但是,我发现如果我将page方法放在父页面中,则可以调用它,但如果我将该方法放在用户控制代码文件中,则无法调用它。但由于某些原因,我无法控制父页面,但可以完全控制用户控件。如何克服这一限制 我使用javascript调用pagemethod,如下所示: jQuery("[id$='tb_UserName']").blur(function() { var login = jQu

我正在使用.net/c#开发一个web应用程序。我有一个用户控件,我想使用javascript从客户端调用它的页面方法。但是,我发现如果我将page方法放在父页面中,则可以调用它,但如果我将该方法放在用户控制代码文件中,则无法调用它。但由于某些原因,我无法控制父页面,但可以完全控制用户控件。如何克服这一限制

我使用javascript调用pagemethod,如下所示:

jQuery("[id$='tb_UserName']").blur(function() {
var login = jQuery("[id$='tb_UserName']").val();
    PageMethods.SearchUserName(login, SearchUserNameCallback);
});
function SearchUserNameCallback(result) {
    alert(result);
}
页面方法SearchUserName定义如下:

[WebMethod]
public static string SearchUserName(string name)
{
    ...
}

这种方法没有问题,只是它的位置有很大的不同。若我把它放在用户控制代码文件中,错误显示为“Pagemethods是未定义的”。若我把它放在父代码文件中,它工作正常。但我无法控制父文件,只能在测试环境中进行。

它被称为页面方法,因为它们只存在于页面级别。如果需要可以存在于不同作用域中的内容,则应使用ASMX或WCF web服务,并将其作为服务引用包含在ScriptManager中。

可以从用户控件调用web服务吗?可以从任何位置调用它们。有一个特殊的ScriptManagerProxy控件,您可以使用它从页面层次结构中较高的组件“扩展”脚本管理器(即:母版页上的ScriptManager,页面/用户控件上的ScriptManagerProxy)