Ich stelle eine ähnliche Frage here und Darin Dimitrov
Antwort, dass wir URL Helfer wie $.ajax({ url: '@Url.Action("Index")', . . .
in separaten js-Datei nicht verwenden können, was ist Ihr Vorschlag, Url-Helfer in der Ansichtsseite zu verwenden und es an Javascript zu übergeben, möchte ich nicht harte Codeurl benutzen, ich muss es mit Hilfe der URL finden.Verwenden Sie Seprate js Datei Und verwenden Sie Url Helfer darin mit ASP.NEt MVC 3 und Razor View Engine
Antwort
Verwenden Sie ein verstecktes Feld speichern Sie Ihre URL, dann benutze Javascript, um das versteckte Feld zu lesen, und benutze es dann in deinem Code. Auf diese Weise können Sie die JS-Datei von der Ansicht trennen. Etwas wie folgt aus:
//In Your View
@Html.Hidden("MyURL", Url.Action("Index"))
//In Your JS
var myUrl = $("#MyURL").val();
$.ajax({ url: myUrl , . . .
Der einfachste Weg ist nur eine globale Variable mit dem Namen etwas zu schaffen, und zu verweisen nur, um es in Ihrem externen JS
var baseURL = '@Url.Action("Index")';
In Ihrem externen JS
$.ajax({ url: baseURL + "Action"
Best Practice ist Ihre globale Variablen '' ' if { window.myProject = {} auf Namensraum (window.myProject!); } myProject.baseURL = '@ URL.Action ("Index")'; '' ' – Josiah
Sie RazorJS zu diesem Zweck verwenden können. Es ermöglicht das Schreiben von Razor-Style C# oder VB.NET in Ihre JavaScript-Dateien. Es ist eine kurze Beschreibung verfügbar here.
Die angegebene URL ist nicht mehr gültig. Können Sie das bitte überprüfen? Bitte aktualisieren Sie die URL, wenn Sie welche kennen. Ich brauche das auch. Danke im Voraus. –
Werfen Sie einen Blick auf Generating External JavaScript Files Using Partial Razor Views. In diesem Blogbeitrag beschreibe ich, wie Sie regelmäßige Razor-Ansichten und einen benutzerdefinierten Aktionsfilter verwenden können, um externe JavaScript-Dateien zu rendern, die Razor-Code enthalten können.
Es ist nicht notwendig, ein verstecktes Feld zu haben, auch das funktioniert in der externen .js-Datei.
var myUrl =/Controllername/Aktionsname;
$.ajax({ url: myUrl , . .
verwenden ich einen ähnlichen Ansatz zu raklos, sondern suchte den Root-Verzeichnis-Pfad in allen Orten zu bekommen, also ging ich unten mit dem Code.
@Html.Hidden("AppUrl", Url.Content("~"))
Ausgezeichneter Vorschlag !! –
Haben Sie in Betracht gezogen, dass dies zu Sicherheitslücken in der Anwendung führen kann? Ein Hacker kann die Ziel-URL auf dem Server ersetzen, indem er einfach den Wert versteckter Felder ändert! – Mosh
@Mosh Alles in einer Webseite kann von einem sogenannten Hacker geändert werden, einschließlich der JavaScript-Dateien, bevor sie ausgeführt werden. Sie können das nicht verhindern (auch nicht mit Verschlüsselung). Das einzige Problem ist, dass ein Hacker den Wert dieser versteckten Felder für andere Personen ändern könnte. – Pluto