2013-07-17 24 views
12

Ich versuche, die Url.Action-Methode zu verwenden, um die erforderliche URL für einen AJAX-Aufruf korrekt zu generieren, aber ich habe Probleme beim Erstellen der RouteValues, hier ist die Problem Codezeile:Verwenden von Url.Action in JavaScript

var url = @Url.Action("ViewFile", "Default", new { itemId = $(this).data("itemid") }); 

Wie Sie sehen können, ich versuche, das Ergebnis der JQuery $(this).data("itemid") zu itemId in dem Routevalues ​​zuzuordnen.

Gibt es eine Möglichkeit, eine Rasierersyntax zu verwenden, mit der dieser Code kompiliert werden kann?

Antwort

23

Sie verwechseln Clientseite mit Serverseite. Probieren Sie etwas wie folgt aus:

var url = '@Url.Action("ViewFile", "Default")?itemId=' + $(this).data("itemid"); 

, wenn Sie einen @ mit rasiermesser Ansicht Motor schreiben Sie eine Anweisung schreiben, die am Ende dieses Befehls-Prozess auf der Server-Seite sein wird. In Ihrem Fall möchten Sie einen Parameter in der URL hinzufügen, die aus dem Javascript kommt, also geben Sie auf der Clientseite einfach den Wert mit der URL ein, die vom @Url Helper generiert wird.

PS: Ich nehme an, dass Sie die Standard-Route-Tabellen verwenden.

+3

Ah, natürlich die JQuery gewohnt laufen, wenn der Server-Seite Code ausführt, wie dumm von mir. Vielen Dank. [Hängt Kopf in Schande] – philreed

9

Eine andere Möglichkeit ist es, einen Platzhalter zu erstellen und sie dann ersetzen:

var url = '@Url.Action("GetOrderDetails", "Home", new { id = "js-id" })' 
       .replace("js-id", encodeURIComponent(rowId)); 
Verwandte Themen