ASP.Net客户端回调无法从ASCX控件工作

时间:2010-07-09 11:40:48

标签: .net asp.net ajax callback ascx

我需要从客户端调用ASP.Net服务器端代码。因为我在ascx用户控件中,所以我不能使用[webmethod] + PageMethods,因为这只适用于ASPX页面。

我认为可以使用的下一个选项是手动创建客户端回调。使用此方法,客户端将成功调用服务器代码,但客户端将不会收到回调。这是我设置客户端脚本块的代码:

protected void Page_Load(object sender, EventArgs e)
{

     String strJSCallbackPrefix = this.ClientID;

     ClientScriptManager cm = Page.ClientScript;

     String cbReference = cm.GetCallbackEventReference(this, "arg", strJSCallbackPrefix + "ReceiveServerData", "context");

     String callbackScript = "function " + strJSCallbackPrefix + "CallServer(arg, context){" + cbReference + "; }";

     cm.RegisterClientScriptBlock(this.GetType(), strJSCallbackPrefix + "CallServer", callbackScript, true);

     String strReceiveServerData = "function " + strJSCallbackPrefix + "ReceiveServerData(arg, context){document.getElementById('btnCancel').value='thisandthat';}";

     cm.RegisterClientScriptBlock(this.GetType(), strJSCallbackPrefix + "ReceiveServerData", strReceiveServerData, true);

     Button2.OnClientClick = strJSCallbackPrefix + "CallServer('test message',1); " + "return false;";
}

public string GetCallbackResult()
{
    return returnValue;
}

public void RaiseCallbackEvent(string eventArgument)
{
    returnValue = "11223" + eventArgument;
}

有没有人知道为什么客户回电没有被解雇?

1 个答案:

答案 0 :(得分:0)

您可以将PageMethod添加到包含的aspx页面中。它无论在何处都无关紧要,因为无论如何你都无法与PageMethod的页面/ usercontrol内容进行交互。

请注意,如果在很多页面中使用了usercontrol,这可能会成为维护的噩梦。