Come aggiungere un attributo media per il tag HTML CSS LINK per il ASP.NET WebResource.axd Http Handler

StackOverflow https://stackoverflow.com/questions/2730637

Domanda

Il ASP.NET WebResource.axd Http Handler viene utilizzato per servire le risorse incorporate nella DLL.

Il tag link HTML viene generato automaticamente da ASP.NET.

Vorrei intercettare la generazione del tag link HTML per un certo insieme di CSS incorporato da una terza parte DLL e aggiungere un attributo media.

In sintesi:

Vorrei aggiungere un attributo media al tag link HTML per il ASP.NET WebResource.axd Http Handler.

Quindi questo:

<link type="text/css" rel="stylesheet" href="/WebResource.axd?d=XXXXX" />

Appare in questo modo:

<link media="screen and (min-device-width: 481px)" type="text/css" rel="stylesheet"
 href="/WebResource.axd?d=XXXXX" />

Saluti

È stato utile?

Soluzione

C'è una soluzione. In primo luogo, i collegamenti di questo tipo vengono aggiunti alla testa del Page. La tua pagina deve avere runat=”server” nel tag <head> per l'inclusione automatica foglio di stile. Le pagine create dal IDE hanno automaticamente questa impostazione. Così, i collegamenti che si aggiunge è un tipo di controllo HtmlLink. L'idea è di iterare attraverso i controlli a colpo di testa di Page, trovare controlli HtmlLink e set di attributi necessari (o anche gli attributi). Includo questo nell'evento Page_Load:

Page.Header.Controls
    .OfType<HtmlLink>()
    .ToList()
    .ForEach(link =>
    {
        link.Attributes["media"] = "screen and (min-device-width: 481px)";
    });

Prima di questo ho avuto:

<head id="Header">
    <title></title>
    <link href="App_Themes/MyTheme/main.css" 
          type="text/css" 
          rel="stylesheet" />
</head>

e dopo il risultato è il seguente:          

Lo so, questo uso Themes invece di WebResource.axd ma per l'ultimo il risultato sarà lo stesso.

L'ultima cosa: non ci può essere un altro link nella pagina. Quindi sarebbe bene riconoscere i nostri link (i link devono essere modificato). Quindi, se non v'è alcun attributo id si potevano riconoscere per attributo href.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top