40 messaggi dal 23 ottobre 2013
Ciao,

qualcuno mi sa aiutare su come fare accesso alla cartella wwwroot/images tramite javascript?

l'istruzione:

$("#cellaB8img").attr("src","~/images/alfiereNero.png");

non funziona. Non riesce ad accedere alla cartella wwwroot.

Grazie per l'aiuto.
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
credo che il problema sia la tilde ~
Quello infatti è un carattere che ha significato lato server, per il view engine Razor e indica il percorso radice dell'applicazione.
Tipicamente le applicazioni vengono pubblicate su www.miosito.it (percorso radice: /), ma non è sempre così. A volte sono pubblicate in www.miosito.it/cartella (percorso radice: /cartella) e la tilde è utile proprio perché permette di comporre percorsi che tengono conto di questo fatto.

La tilde non ha significato lato client e perciò se apri il pannello degli strumenti di sviluppo del browser (tasto F12) e vai nella scheda "Rete" o "Network", vedrai che apparirà una richiesta 404.

Ci sono due soluzioni:

1. Eliminare semplicemente la tilde:
$("#cellaB8img").attr("src","/images/alfiereNero.png");


2. Oppure, usare Url.Content, che è un helper che va in esecuzione lato server ed elaborerà il percorso in modo che sia sempre funzionante, a prescindere a quale sia il percorso radice dell'applicazione. Questo codice deve trovarsi in una view. Se si trova in un file javascript non funzionerà.
$("#cellaB8img").attr("src","@Url.Content("~/images/alfiereNero.png")");


La soluzione 2. è più indicata però mi rendo conto che è anche meno leggibile. Se hai tante istruzioni del genere di usare una costante per farlo una volta per tutte.
const radice = "@Url.Content("~/")";
$("#cellaB8img").attr("src", radice + "images/alfiereNero.png");


Oppure anche usare il tag <base> potrebbe essere un'alternativa.
https://developer.mozilla.org/it/docs/Web/HTML/Element/base

ciao,
Moreno
Modificato da BrightSoul il 17 settembre 2019 20:24 -

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.