7

Voglio capire completamente come utilizzare l'indirizzo url relativo e assoluto nei file statici e dinamici.ottenere l'url di base della radice del sito web (url assoluto/relativo)

~ : 
/: 
.. : in a relative URL indicates the parent directory 
. : refers to the current directory 
/: always replaces the entire pathname of the base URL 
// : always replaces everything from the hostname onwards 

Questo esempio è facile quando si lavora senza directory virtuale. Ma sto lavorando sulla directory virtuale.

Relative URI   Absolute URI 
about.html   http://WebReference.com/html/about.html 
tutorial1/   http://WebReference.com/html/tutorial1/ 
tutorial1/2.html  http://WebReference.com/html/tutorial1/2.html 
/     http://WebReference.com/ 
//www.internet.com/ http://www.internet.com/ 
/experts/    http://WebReference.com/experts/ 
../     http://WebReference.com/ 
../experts/   http://WebReference.com/experts/ 
../../../    http://WebReference.com/ 
./     http://WebReference.com/html/ 
./about.html   http://WebReference.com/html/about.html 

Voglio simulare un sito di seguito, come il mio progetto che sta lavorando su directory virtuale.

Questi sono i miei cartella aspx e ascx

http://hostAddress:port/virtualDirectory/MainSite/ASPX/default.aspx 
http://hostAddress:port/virtualDirectory/MainSite/ASCX/UserCtrl/login.ascx 

http://hostAddress:port/virtualDirectory/AdminSite/ASPX/ASCX/default.aspx 

Questi sono i miei JS file (che verrà utilizzare sia con i file aspx e ascx):

http://hostAddress:port/virtualDirectory/MainSite/JavascriptFolder/jsFile.js 
http://hostAddress:port/virtualDirectory/AdminSite/JavascriptFolder/jsFile.js 

questa è la mia pagina web statica indirizzo (voglio mostrare alcune foto ed eseguire all'interno di alcune funzioni js):

http://hostAddress:port/virtualDirectory/HTMLFiles/page.html 

questa è la mia immagine piega er

http://hostAddress:port/virtualDirectory/Images/PNG/arrow.png 
http://hostAddress:port/virtualDirectory/Images/GIF/arrow.png 

se voglio scrivere e collegamento di file di immagini nel mio file ASPX dovrei scrivere

aspxImgCtrl.ImageUrl = Server.MapPath("~")+"/Images/GIF/arrow.png"; 

Ma se voglio scrivere il percorso codificato duro o da file JavaScript, che tipo di URL indirizzo dovrebbe essere?

risposta

7

L'operatore ~ ​​è riconosciuto da asp.net solo per i controlli server e nel codice server. Non è possibile utilizzare l'operatore ~ ​​per gli elementi del client.

assoluti e relativi riferimenti di percorso in un controllo server presentano i seguenti svantaggi:

• Percorsi assoluti non sono portabili tra le applicazioni. Se si sposta l'applicazione a cui punta il percorso assoluto, i collegamenti si interromperanno.

• I percorsi relativi nello stile degli elementi del client possono essere difficili da mantenere se si spostano risorse o pagine in cartelle diverse.

Per ovviare a questi svantaggi, ASP.NET include l'operatore root dell'applicazione Web (~), che è possibile utilizzare quando si specifica un percorso nei controlli server. ASP.NET risolve l'operatore ~ ​​nella root dell'applicazione corrente. È possibile utilizzare l'operatore ~ ​​insieme alle cartelle per specificare un percorso basato sulla root corrente.

Per quanto riguarda l'esempio che hai postato

aspxImgCtrl.ImageUrl = Server.MapPath("~")+"/Images/GIF/arrow.png"; 

il codice qui sopra renderà il percorso fisico del server (ad esempio - c: \ inetpub \ wwwroot \ mysite \ immagini \ gif \ arrow.png", che è significato meno sul lato client,

si dovrebbe utilizzare questo per il corretto percorso relativo cliente:

aspxImgCtrl.ImageUrl = "~/Images/GIF/arrow.png"; 

per includere risorse da JavaScript si può prendere in considerazione un folde un livello struttura rs per unificare i percorsi di accesso.per esempio:

  • Pagine
  • JS
  • Pix
  • ecc ...

Per maggiori dettagli visita asp.net web site paths