Question

Après avoir tenté de comprendre pourquoi le code client n'est pas restitué dans une page (injecté par le contrôle de l'utilisateur), j'ai trouvé ceci link , il s’avère que vous devez posséder une balise de formulaire pour que cela fonctionne ( Page.RegisterClientScriptBlock a déclaré cela, mais ClientScriptManager.RegisterClientScriptBlock que j'utilise ne dit rien à ce sujet).
J'utilise Visual Studio 2005.
Est-ce que quelqu'un sait si cela a été résolu?

Modifier :
Pour clarifier, je veux que mon contrôle ajoute du code javascript à la section de tête de la page sans avoir à utiliser le

<form runat="server"

J'ai essayé de l'ajouter avec:

HtmlGenericControl x = new HtmlGenericControl("script");
x.InnerText = "alert('123');";
Page.Header.Controls.Add(x);

Mais cela n'a pas fonctionné pour moi.

Était-ce utile?

La solution 2

Compris!
Mon erreur était de ne pas le faire avec la méthode OnPreRender (j'ai utilisé la méthode Render ).

Maintenant, tout ce dont vous avez besoin est - comme l’a écrit Mitchel Sellers, définissez l’en-tête sur serveur runat et que vous ajoutiez à ses contrôles:

 HtmlGenericControl x = new HtmlGenericControl("script");
 x.InnerText = GetScriptSection();
 Page.Header.Controls.Add(x);

Merci de m'avoir orienté dans la bonne direction!

Autres conseils

Autant que je sache, cela fonctionne de la même manière que dans les versions actuelles, vous pouvez le tester très simplement.

Mettre à jour

par discussion dans les commentaires, le seul "aire solution de contournement " que je pourrais penser serait que vous insériez manuellement le script dans la & "tête &"; section de la page sur votre propre, en utilisant un runat = " serveur " déclaration sur l'élément Head.

La page MSDN de registerclientscriptblock ici dit:

  

Le script côté client est émis uniquement   après la balise d'ouverture de la page   l'objet < form runat = server > élément.   Le bloc de script est émis en tant que   objet qui rend la sortie est   défini, vous devez donc inclure les deux balises   du < script > élément.

Si vous ne souhaitez pas inclure de formulaire, il vous faudra en principe créer votre propre implémentation.

Quelques éclaircissements pour ceux qui voient ceci:

La balise de formulaire doit avoir le runat = " serveur " ensemble d'attributs, par exemple

<form id="theform" runat="server">

Il ne suffit pas de placer une balise de formulaire HTML normale dans la page.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top