Partager via


Génération d'un script côté client pour la publication

Seuls deux éléments formulaire HTML (bouton et bouton image) entraînent la publication de formulaire. Si votre contrôle personnalisé rend un élément HTML qui n'entraîne pas la publication (tel qu'une zone de texte ou un bouton de lien) et si vous souhaitez que le contrôle lance la publication, vous pouvez programmer cette opération dans ASP.NET à l'aide d'une architecture d'événement qui se base sur un script côté client (JScript, JavaScript).

Les développeurs de contrôles doivent apporter quelques légères modifications à leurs contrôles pour activer ce mécanisme de publication. Le fragment de code suivant illustre (en gras) le code qui doit être ajouté à la méthode Render d'un contrôle pour lancer la publication.

protected override void Render(HtmlTextWriter output) {
                  output.Write("<a  id=\"" + this.UniqueID + "\" href=\"javascript:" + Page.GetPostBackEventReference(this) +"\">");
                  output.Write(" " + this.UniqueID + "</a>");
            }
[Visual Basic]
Protected Overrides Sub Render(output As HtmlTextWriter)
   output.Write("<a  id=""" & Me.UniqueID & _
         """ href=""javascript:" & _         Page.GetPostBackEventReference(Me) & """>")
   output.Write(" " & Me.UniqueID & "</a>")
End Sub

La méthode GetPostBackEventReference émet un script côté client qui lance la publication et fournit également une référence au contrôle qui a lancé l'événement de publication.

Pour comprendre ce que la méthode GetPostBackEventReference effectue, compilez le code dans la section suivante, Exemple de publication à l'aide d'un script côté client, et demandez la page .aspx qui l'accompagne dans votre navigateur. Si vous affichez la source de la page rendue à l'aide de la commande Afficher la source de votre navigateur, le code HTML et le script suivants apparaissent. (Les valeurs réelles du nom et les attributs ID du formulaire varient, ainsi que l'attribut value de la variable masquée.)

<html>
<body>
<form name="ctrl2" method="POST" action="MyLinkButton.aspx" id="ctrl2">
<input type="hidden" name="__EVENTTARGET" value="" /><input type="hidden" name="__EVENTARGUMENT" value="" />
<input type="hidden" name="__VIEWSTATE" value="dDwtMjI1NTgwNDE2Ozs+eIZ+AfRvoCj1nWimbh+zPv/rKNg=" />                  
Here is the custom link button.<br>
<a  id ="Link" href="javascript:__doPostBack('Link','')"> Link</a> 
<br><br>
<input name="TextBox" type="text" value="Click the link" id="TextBox" style="background-color:Cyan;width:200px;" /> 
<br>                                                
<script language="javascript"><!--      function __doPostBack(eventTarget, eventArgument) {            var theform = document.ctrl2            theform.__EVENTTARGET.value = eventTarget            theform.__EVENTARGUMENT.value = eventArgument            theform.submit()      }// --></script>
</form>                  
</body>                        
</html>            

Les éléments en gras dans cet exemple (deux champs masqués et la méthode de script côté client) sont ajoutés par l'infrastructure de page ASP.NET. Les champs de formulaire masqués indiquent le contrôle serveur à publier et spécifient éventuellement un argument à passer. La méthode de script côté client est utilisée pour les champs masqués et entraîne l'envoi du formulaire au serveur. Pour obtenir un exemple complet, consultez Exemple de publication à l'aide d'un script côté client.

Voir aussi

Exemple de publication à l'aide d'un script côté client