jQuery Ajax: Verweis auf die MVC-Controller-URL aus dem App-Stammverzeichnis

7

Ich habe eine ASP.NET MVC-Webanwendung, die von http://localhost/myappname ausgeführt wird. Von jQuery aus mache ich jQuery $ .ajax () -Aufrufe, um Teilansichten basierend auf einer Benutzeraktion zurückzugeben. Ich rufe das normalerweise aus einer Sicht in demselben Controller, der die Funktion enthält, die ich über Ajax aufruft. Zum Beispiel hat eine Ansicht in meinem Home-Controller die folgende Funktion (die gut funktioniert):

%Vor%

Diese obige URL wird in http://localhost/myappname/Home/GetNavigationTreePV aufgelöst und die Teilansicht wird korrekt zurückgegeben.

Nun versuche ich qUint zu benutzen, um meine Funktionen zu testen. In diesem Testfall möchte ich nur bestätigen, dass ich bis zum Ende der Funktion komme und wahr zurückgebe. Ich habe einen QUNIT -Controller und eine entsprechende Ansicht erstellt (die meine Unit-Test-JavaScript-Datei lädt). In der Datei test.js, die meine Komponententests enthält, versuche ich, dieselben Funktionen aufzurufen, die sich in meinen Home-Ansichten befinden, wie die oben genannte. Da mir der QUNIT -Controller jedoch ausgeht, wird die URL in http://localhost/myappname/qunit/Home/GetNavigationTreePV aufgelöst.

Ich habe versucht, die URL meiner Ajax-Anfrage auf /Home/GetNavigationTreePV/ (mit dem vorhergehenden Schrägstrich) zu ändern, aber wenn ich das tue, bekomme ich die folgende URL http://localhost/myappname/Home/GetNavigationTreePV .

Um klar zu sein, versuche ich meine Ajax-Anfrage auf eine Art und Weise zu schreiben, die immer von der Wurzel meiner MVC-Anwendung ausgeht, und dann den in meiner $ .ajax () - Funktion angegebenen URL-Parameter anfügt.

Gibt es einen einfachen Weg, das zu tun? Tue ich das auf eine komische Weise?

    
MattW 10.10.2011, 13:55
quelle

2 Antworten

10

Ich konnte dies mit reinem JavaScript mit window.location.pathname erreichen. Siehe das folgende Beispiel:

%Vor%     
MattW 17.10.2011, 16:18
quelle
10

Ich denke, auf Ihrer MVC View-Seite benötigen Sie @ Url.Action

%Vor%

Alternativ können Sie @ Url.Content

verwenden %Vor%

Wenn dies in einer .js-Datei ist, können Sie die URL wie

übergeben
  

loadMyPartialView ('@ URL.Action ("GetNavigationTreePV", "Home")')

    
Steve 10.10.2011 14:21
quelle

Tags und Links