2010-07-09 108 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