asp.net - tutorial - web form asp net
Controllo utente con file CSS esterno (3)
Dovresti creare un file bundle.config e quindi puoi usarlo nel tuo codice
Ho un controllo utente ASCX nella radice della mia applicazione Web. Fa riferimento a un foglio di stile, qualcosa di simile
<link type="text/css" rel="stylesheet" href="MyStyle.css" />
Il problema è se le pagine ASPX situate nelle sottocartelle dell'applicazione fanno riferimento a tale controllo utente: non vedono il foglio di stile, perché il percorso href è relativo e il foglio di stile rimane nella radice dell'app.
C'è un modo oltre a copiare il CSS in tutte le sottocartelle per fare riferimento a livello universale dalla radice? Non ho alcun problema a fare riferimento a JavaScript esterno, utilizzando ScriptManagerProxy Posso specificare il percorso del file JS esterno tramite la notazione ASP.NET "~ /" che viene risolta in un percorso reale da qualsiasi posizione. Esiste qualcosa di simile per i CSS?
In realtà hai due opzioni:
1- per includerlo nella cartella dei temi, quindi il framework asp.net lo includerà automaticamente in tutte le pagine che utilizzano questo tema
2- aggiungere una variabile pubblica nel tuo codice CS che includa il percorso, quindi utilizzarlo nel codice, come il seguente codice:
public string basepath = "http://" + Request.Url.Authority + Request.ApplicationPath;
quindi per usarlo nel codice ASP:
<link type="text/css" rel="stylesheet" href="<%=basepath %>MyStyle.css" />
ResolveUrl convertirà gli URL relativi all'applicazione per te. http://msdn.microsoft.com/en-us/library/system.web.ui.control.resolveurl.aspx
<link href="<%= ResolveUrl("~/MyStyle.css") %>" rel="stylesheet" />
EDIT: se non si desidera utilizzare blocchi di codice inline
code-behind
protected void Page_Load(object sender, EventArgs e)
{
litStyle.Text = string.Format("<link href=\"{0}\" rel=\"stylesheet\" />", ResolveUrl("~/MyStyle.css"))
}
markup
<asp:Literal ID="litStyle" runat="server"/>