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"/>




user-controls