2013-07-17 20 views
12

Próbuję użyć metody Url.Action, aby poprawnie wygenerować wymagany adres URL dla wywołania ajax, ale napotkam problemy podczas próby utworzenia parametru RouteValues, oto linia kodu problemu:Używanie Url.Action w javascript

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

Jak widać, próbuję przypisać wynik z JQuery $(this).data("itemid") do itemId w RouteValues.

Czy istnieje sposób używania składni brzytwy, który pozwoli na kompilowanie tego kodu?

Odpowiedz

23

Dezorientujesz stronę klienta po stronie serwera. Spróbuj czegoś takiego:

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

kiedy piszesz @ z widokiem maszynki silnik, piszesz instrukcję, która będzie proces po stronie serwera na końcu tego polecenia. W twoim przypadku chcesz dodać parametr w adresie URL pochodzącym z javascriptu, więc po stronie klienta wpisz wartość z adresem URL wygenerowanym przez pomocnika @Url.

PS: Zakładam, że używasz domyślnych tabel tras.

+3

Ach, oczywiście jQuery przyzwyczajenie uruchomić, gdy kod wykonywany po stronie serwera, jak głupie z mojej strony. Dzięki. [Zawstydza głowę] – philreed

9

Innym sposobem jest stworzenie uchwytu miejscu, a następnie zastąpić go:

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