Comment ajouter un attribut media à la balise html CSS LINK pour le ASP.NET WebResource.axd Http Handler
-
02-10-2019 - |
Question
Le ASP.NET WebResource.axd Http Handler est utilisé pour servir des ressources incorporées dans.
DLLLa balise HTML LINK est généré automatiquement par ASP.NET.
Je voudrais intercepter la génération de la balise html LINK pour un certain ensemble de CSS intégré d'un tiers DLL et ajouter un attribut media.
En résumé:
Je voudrais ajouter un attribut média à la balise html LINK pour le ASP.NET WebResource.axd Http gestionnaire.
Alors ceci:
<link type="text/css" rel="stylesheet" href="/WebResource.axd?d=XXXXX" />
apparaît comme ceci:
<link media="screen and (min-device-width: 481px)" type="text/css" rel="stylesheet"
href="/WebResource.axd?d=XXXXX" />
Vive
La solution
Il existe une solution. Tout d'abord, des liens comme celui-ci sont ajoutés à la tête du Page
. Votre page doit avoir runat=”server”
dans la balise <head>
pour l'inclusion de feuille de style automatique. Les pages créées par l'EDI ont ce paramètre automatiquement. Ainsi, les liens ajoutés est un type de contrôle de HtmlLink
. L'idée est de itérer grâce à des contrôles dans l'en-tête de Page
, trouver des contrôles de HtmlLink
et ensemble attribut nécessaire (ou les attributs même). J'inclure cela dans l'événement Page_Load
:
Page.Header.Controls
.OfType<HtmlLink>()
.ToList()
.ForEach(link =>
{
link.Attributes["media"] = "screen and (min-device-width: 481px)";
});
Avant cela, j'avais:
<head id="Header">
<title></title>
<link href="App_Themes/MyTheme/main.css"
type="text/css"
rel="stylesheet" />
</head>
et après le résultat est le suivant:
Je sais, cette utilisation Themes
insted de WebResource.axd
mais pour le dernier résultat sera le même.
La dernière chose: il peut y avoir un autre lien dans la page. Donc, il serait bon de reconnaître nos liens (les liens doivent être modifiés). Donc, s'il n'y a pas d'attribut id
vous pouvez les reconnaître par attribut href
.