faccio una domanda simile here e Darin Dimitrov
risposta che non possiamo usare URL aiutante come $.ajax({ url: '@Url.Action("Index")', . . .
in un file js separato in modo qual è la vostra suggerimento di usare l'helper Url nella pagina di visualizzazione e passarlo a javascript, non voglio usare l'url del codice duro, ho bisogno di trovarlo con l'helper Url.?Usa seprate js file e utilizzare Url Helpers in essa con ASP.NEt MVC 3 e Razor View Engine
risposta
Utilizzare un campo nascosto per memorizzare il vostro url, quindi usa javascript per leggere il campo nascosto, quindi usalo nel tuo codice. In questo modo puoi mantenere il file JS separato dalla vista. Qualcosa di simile a questo:
//In Your View
@Html.Hidden("MyURL", Url.Action("Index"))
//In Your JS
var myUrl = $("#MyURL").val();
$.ajax({ url: myUrl , . . .
Il modo più semplice è solo per creare una variabile globale chiamata qualcosa e solo riferimento ad esso nella vostra JS esterno
var baseURL = '@Url.Action("Index")';
All'interno della vostra JS esterno
$.ajax({ url: baseURL + "Action"
Le migliori pratiche è quello di namespace le variabili globali '' ' se { window.myProject = {} (window.myProject!); } myProject.baseURL = '@ Url.Action ("Index")'; '' ' – Josiah
È possibile utilizzare RazorJS a tale scopo. Permette di scrivere Razor-Style C# o VB.NET all'interno dei file JavaScript. C'è una breve descrizione disponibile here.
L'URL di descrizione data non è valido ora. Puoi controllare per favore? Si prega di aggiornare l'URL se ne conosci qualcuno. Anch'io ne ho bisogno. Grazie in anticipo. –
Dai uno sguardo allo Generating External JavaScript Files Using Partial Razor Views. In questo post del blog, descrivo come è possibile utilizzare le normali viste Razor e un filtro azioni personalizzato per eseguire il rendering di file JavaScript esterni che possono contenere codice Razor.
Non è necessario disporre di campo nascosto, anche questo funziona nel file .js esterno.
var myUrl =/ControllerName/ActionName;
$.ajax({ url: myUrl , . .
ho usato un approccio simile a raklos, ma stava cercando di ottenere il percorso della directory principale in tutti i luoghi, così sono andato con il codice qui sotto.
@Html.Hidden("AppUrl", Url.Content("~"))
Ottimo suggerimento !! –
Hai considerato che questo può aprire dei buchi di sicurezza nell'applicazione? Un hacker può sostituire l'URL di destinazione sul server semplicemente modificando il valore dei campi nascosti! – Mosh
@Mosh Tutto in una pagina Web può essere modificato da un cosiddetto hacker, inclusi i file JavaScript prima dell'esecuzione. Non puoi fermarlo (anche con la crittografia). L'unico momento in cui questo sarebbe un problema è se un hacker potrebbe modificare il valore di quei campi nascosti per le altre persone. – Pluto