2010-07-09 2 views
0

Je dois appeler le code côté serveur ASP.Net du client. Parce que je suis dans un contrôle utilisateur ascx je ne peux pas utiliser [webmethod] + PageMethods car cela ne fonctionne que sur les pages ASPX.ASP.Net Le rappel du client ne fonctionne pas à partir du contrôle ASCX

La prochaine option que je pensais travailler était la création manuelle d'un callback client. En utilisant cette méthode, le client appellera avec succès le code du serveur, mais le client ne recevra pas le rappel. Ceci est mon code pour la mise en place des blocs de script côté client:

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

Est-ce que quelqu'un a des idées pour lesquelles l'appel client ne reçoit pas riposté?

Répondre

0

Vous pouvez simplement ajouter le PageMethod dans la page aspx contenant. Cela n'a pas vraiment d'importance car vous ne pouvez pas interagir avec le contenu de la page/usercontrol à partir de la méthode PageMethod de toute façon. Il suffit de se méfier, cela pourrait devenir un cauchemar de maintenance si la commande usercontrol est utilisée dans beaucoup de pages.

+0

Comme mentionné ci-dessus, j'ai un accès limité à la page ASPX parce que c'est dans un environnement géré par le contenu. C'est pourquoi j'essaye de garder tout soigneusement rangé dans un contrôle d'utilisateur. – Max

Questions connexes