2010-07-09 69 views
0

我需要从客户端调用ASP.Net服务器端代码。因为我处于ascx用户控件中,所以无法使用[webmethod] + PageMethods,因为它只能在ASPX页面上使用。ASP.Net客户端回调无法从ASCX控件工作

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

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; 
} 

有没有人有任何想法,为什么客户端回拨没有被解雇?

回答

0

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

只要小心,如果usercontrol在很多页面中使用,这可能会成为维护的噩梦。

+0

如上所述,我对aspx页面的访问权限有限,因为它位于内容管理环境中。这就是为什么我要把所有东西整齐地放在用户控件中。 – Max 2010-07-09 13:30:44