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.

2
Koby Douek 20 avril 2017 à 07:33

3 réponses

Meilleure réponse

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.

2
Chirag 20 avril 2017 à 04:51

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 :)

2
Emad 20 avril 2017 à 04:50

Vous pouvez utiliser ce code côté serveur

HtmlGenericControl link = this.FindControl(linkCSS.UniqueID) as HtmlGenericControl;

link.Attributes["href"] = "css/2.css";
-1
Chirag 20 avril 2017 à 05:40