Domanda

Ho iniziato a lavorare un po ' con le pagine master per un ASP.net mvc sito e ho incontrato una domanda.Quando c'è il link in un foglio di stile della pagina principale sembra quello di aggiornare il percorso del foglio correttamente.Che è il codice che ho

<link href="../../Content/Site.css" rel="stylesheet" type="text/css" />

ma, guardando il sorgente una volta che la pagina viene alimentato un browser ottengo

<link href="Content/Site.css" rel="stylesheet" type="text/css" />

che è perfetto.Tuttavia lo stesso percorso di traduzione non sembra funzionare per i file di script.

<script src="../../Content/menu.js" type="text/javascript"></script>

appena esce la stessa cosa.Sembra ancora lavorare su una pagina di primo livello, ma ho il sospetto che è solo il browser/server web correggere il mio errore.C'è un modo per ottenere il src percorso globbed troppo?

È stato utile?

Soluzione

<script src="<%= ResolveClientUrl("~/Content/menu.js") %>" type="text/javascript"></script>

Altri suggerimenti

Fare un metodo di estensione.Ecco un metodo:

public static string ResolveUrl(this HtmlHelper helper, string virtualUrl)
{
    HttpContextBase ctx = helper.ViewContext.HttpContext;
    string result = virtualUrl;

    if (virtualUrl.StartsWith("~/"))
    {
        virtualUrl = virtualUrl.Remove(0, 2);

        //get the site root
        string siteRoot = ctx.Request.ApplicationPath;

        if (!siteRoot.EndsWith("/"))
            siteRoot += "/";

        result = siteRoot + virtualUrl;
    }
    return result;
}

È quindi possibile scrivere script ref come:

<script type="text/javascript" src="<%= Html.ResolveUrl("~/Content/menu.js")%>"></script>

Utilizzare invece questo:

<link href="~/Content/Site.css" rel="stylesheet" type="text/css" />

oppure si può utilizzare il tag di BASE in CAPO sezione della pagina.Tutti i link quindi sono relativi alla posizione entrato nella "base" del tag, e non devi usare "../../" e "~" roba.Ad eccezione dei collegamenti nei file CSS (sfondo url,ecc), dove i link sono relativi alla posizione del file css.

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