2012-05-06 16 views
38

Non riesco a capire i vantaggi che posso ottenere dal metodo Url.Content() in ASP.NET MVC. Ad esempio, vedi src='@Url.Content("~/Contents/Scripts/jQuery.js")'. Perché dovrei usarlo? Quali ragioni potrebbero esistere per usarlo? Quali sono i vantaggi, i vantaggi, ecc. Rispetto all'utilizzo di semplici semplici riferimenti come src='/scripts/jquery.js?Perché dovrei usare @ Url.Content ("~/blah-blah-blah")?

Aggiornamento: In base alle risposte, mi piacerebbe sapere se vi sono altri motivi per utilizzarlo, oltre alla gestione delle cartelle virtuali? Perché non ho visto molte applicazioni virtuali (il che ovviamente non significa che non sia stato usato così tanto).

+1

Non hai mai avuto più applicazioni esistenti in un unico sito web –

+0

Beh, è ​​l'unica ragione per cui usano' @ Url.Content'? In tal caso, possiamo semplicemente smettere di usarlo su una sola applicazione per soluzioni di siti web? –

+1

Ci scusiamo per la risposta tardiva - è sempre meglio includerla. Non si sa mai come la struttura del sito possa cambiare in futuro. Tecnicamente, anche se tu non cambieresti la sua posizione e la sua unica app per sito web senza directory virtuali al di sotto di essa, allora sicuramente potresti usare src = '/ scripts/whatever.js' –

risposta

26

La mappatura dei percorsi virtuali è solo uno scopo. Se non hai mai bisogno di mapparli e assicurati che la tua app o le sue cartelle non siedano sotto altre app, non ti serviranno a nessuno scopo.

Dalla documentazione Nota Se non si utilizza ~ si ottiene alcun cambiamento nel risultato comunque: "Annotazioni Se il percorso contenuto specificato non inizia con la tilde (~) personaggio, questo metodo restituisce contentPath invariato. "

+0

Grazie a @AdamTupliper. Quindi ho semplicemente abbandonato questo metodo dalla mia cassetta degli attrezzi;). –

+7

Nota inoltre che in MVC4 alcuni di questi vengono gestiti automaticamente, ad esempio un tag script che puoi semplicemente specificare src = "~/scripts/whatever.js" e il rasoio lo mapperà automaticamente per te ora senza l'uso di url.content –

16

È utile se il percorso di root delle applicazioni non è il percorso principale del server. Url.Content ("~ /") restituisce la cartella principale dell'applicazione.

+0

Non ho mai avuto questo problema. Ma +1. –

+0

Da quello che sto vivendo. usando '~' mostra nessun contenuto dell'immagine quando passi il mouse sopra il link in visual studio. Dice non è stato possibile individuare [percorso]. –

32

Di solito, l'applicazione Web è pubblicata come: www.yoursite.com/. Il carattere ~ corrisponde alla radice del sito /.

Tuttavia, se si pubblica il sito con una directory virtuale www.yoursite.com/mywebapp/, il carattere ~ corrisponderà a "/ mywebapp /". Gli URL hard-coding con il carattere "/" causerebbero riferimenti di pagina errati.