J'ai une page .ASPX dans laquelle je veux changer le CSS href dans le code derrière. J'ai cherché plusieurs astuces pour faire cela mais je n'ai rien trouvé qui fonctionne comme je le souhaite.
Balisage HTML:
<link id="linkCSS" runat="server" href='/css/1.css' rel="stylesheet" type="text/css" />
C'est ce que j'ai tenté dans Code derrière:
If (mobile)
{
HtmlLink link = (HtmlLink)this.FindControl(linkCSS.UniqueID);
link.Href = "/css/2.css";
}
Mais je reçois l'exception suivante:
Impossible de transtyper l'objet de type «System.Web.UI.HtmlControls.HtmlGenericControl» en type «System.Web.UI.HtmlControls.HtmlLink».
Des idées? Merci.
3 réponses
Il n'est pas nécessaire de trouver css, vous pouvez le modifier comme suit.
If (mobile)
{
linkCSS.Attributes["href"] = "~/css/2.css";
}
J'ai renvoyé Ce lien.
Puisque vous ne pouvez pas obtenir et modifier le contrôle (bien que je pense que c'est possible), vous pouvez utiliser un espace réservé pour avoir plus de contrôle sur celui-ci. Comme ça:
<asp:PlaceHolder ID="headPlaceHolder" runat="server" />
Et puis dans votre code serveur:
HtmlLink link = new HtmlLink();
link.Href = "/css/2.css";
headPlaceHolder.Controls.Add(link);
Voyez si cela aide :)
Vous pouvez utiliser ce code côté serveur
HtmlGenericControl link = this.FindControl(linkCSS.UniqueID) as HtmlGenericControl;
link.Attributes["href"] = "css/2.css";
Questions connexes
De nouvelles questions
c#
C # (prononcé "see sharp") est un langage de programmation multi-paradigme de haut niveau, typé statiquement développé par Microsoft. Le code C # cible généralement la famille d'outils et d'exécutions Microsoft .NET, notamment le .NET Framework, .NET Core et Xamarin. Utilisez cette balise pour les questions sur le code écrit en C # ou en spécification formelle de C #.