Meilleur auteur de réponses
Factoriser une div HTML

Question
-
Bonjour,
Je voudrais "factoriser" une div HTML afin qu'il soit utilisée dans plusieurs autres pages.
Comment faire cela ?
En particulier, voici la div que je voudrais placer dans plusieurs de mes pages
<div id="google_translate_element"> <script> function googleTranslateElementInit() { new google.translate.TranslateElement({ pageLanguage: 'fr', layout: google.translate.TranslateElement.InlineLayout.HORIZONTAL }, 'google_translate_element'); } </script> <script src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script> </div>
Merci de votre réponse.
Alain
Réponses
-
Bonjour,
Vous pouvez créer une classe dérivant de la classe WebControl et surcharger la méthode RenderContents. Cette méthode utilise un htmltextwriter. Le code ressemblerait à ça:
public class DivGoogleTranslate: WebControl
{
public override RenderContents(HtmlTextWriter writer)
{
writer.RenderBeginTag(HtmlTextWriterTag.Script);
writer.Write("function googleTranslateElementInit(){new google.translate.TranslateElement({pageLanguage:'fr',layout:google.translate.TranslateElementLayout.HORIZONTAL],'google_translate_element');}");
writer.RenderEndTag();
writer.AddAttribute(HtmlTextWriterAttribute.Src, "//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit");
writer.RenderBeginTag(HtmlTextWriterTag.Script);
writer.RenderEndTag();
}
}
Par contre l'id de la div sera dynamique à cause du NamingContainer et vous ne le controlerez plus. (sauf si vous êtes en .Net 4.0).
Une manière plus propre d'intégrer le javascript serait de réaliser un SciptControl mais pour une simple fonction c'est un peu lourd je trouve.
Christophe Argento
Architecte .Net/Consultant chez Ineat Conseil
Blog: http://christopheargento.com- Marqué comme réponse AchLog dimanche 6 février 2011 21:34
Toutes les réponses
-
Bonjour,
Vous pouvez créer une classe dérivant de la classe WebControl et surcharger la méthode RenderContents. Cette méthode utilise un htmltextwriter. Le code ressemblerait à ça:
public class DivGoogleTranslate: WebControl
{
public override RenderContents(HtmlTextWriter writer)
{
writer.RenderBeginTag(HtmlTextWriterTag.Script);
writer.Write("function googleTranslateElementInit(){new google.translate.TranslateElement({pageLanguage:'fr',layout:google.translate.TranslateElementLayout.HORIZONTAL],'google_translate_element');}");
writer.RenderEndTag();
writer.AddAttribute(HtmlTextWriterAttribute.Src, "//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit");
writer.RenderBeginTag(HtmlTextWriterTag.Script);
writer.RenderEndTag();
}
}
Par contre l'id de la div sera dynamique à cause du NamingContainer et vous ne le controlerez plus. (sauf si vous êtes en .Net 4.0).
Une manière plus propre d'intégrer le javascript serait de réaliser un SciptControl mais pour une simple fonction c'est un peu lourd je trouve.
Christophe Argento
Architecte .Net/Consultant chez Ineat Conseil
Blog: http://christopheargento.com- Marqué comme réponse AchLog dimanche 6 février 2011 21:34
-
-
C'est possible avec un ascx mais vous perdez la réutilisabilité dans un projet différent. Et je trouve ça beaucoup moins propre pour ce genre de contrôles.
Christophe Argento
Architecte .Net/Consultant chez Ineat Conseil
Blog: http://christopheargento.com -