2013-05-08 1 views
0

J'essaie d'exécuter une fonction javascript à partir d'une classe C# dans une application asp.net. J'utilise le ScriptManager. J'ai une classe UpdateUI, qui contient la méthode suivante:Appel de ScriptManager à partir d'une classe

public static void RunScript() 
{ 
    try 
    { 
     if (HttpContext.Current != null) 
     { 
      Page currentPage = HttpContext.Current.Handler as System.Web.UI.Page; 
      ScriptManager.RegisterClientScriptBlock(currentPage, currentPage.GetType(), "disableControls", "disableControls()", true); 
     } 
    } 
    catch (Exception ex) 
    { 
    } 
} 

Quand j'appelle UpdateUI.RunScript() d'une autre classe statique, le HttpContent.Current est null. Toute idée comment dois-je aller pour pouvoir exécuter le scriptmanager d'une classe qui n'est pas code-behind?

+0

D'où la classe statique appelle-t-elle cette méthode? Au cours du cycle de vie d'une page? Sinon, il est 'null' (par exemple, à partir d'une méthode web). –

+0

@TimSchmelter Pour autant que je sache dans un WebMethod HttpContext.Current est disponible. Je pense que je l'ai déjà fait pour obtenir des données de session dans un WebMethod. –

+0

@VitorCanova: Autant que je sache, 'HttpContext.Current.Handler' n'est pas un' Page' dans un webmethod donc c'est 'null'. Cependant, c'était juste un exemple. Il n'a pas mentionné si la classe statique est utilisée pendant le cycle de vie d'une page. –

Répondre

0

Transmettez le HttpContext à la méthode dans votre classe statique. Comme l'indique le commentaire de Tim Schmelter, l'appel de HttpContext.Current échouera s'il n'est pas effectué en réponse à une requête entrante.

public static void RunScript(HttpContext context); 
Questions connexes