web-dev-qa-db-fra.com

Utiliser Url.Action en javascript

J'essaie d'utiliser la méthode Url.Action pour générer correctement l'URL requise pour un appel ajax mais je rencontre des problèmes lors de la tentative de génération des RouteValues, voici la ligne de code du problème:

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

Comme vous pouvez le voir, j'essaie d'assigner le résultat de JQuery $(this).data("itemid") à itemId dans RouteValues.

Existe-t-il un moyen d'utiliser la syntaxe de rasoir qui permettra à ce code de compiler?

14
philreed

Vous confondez le côté client avec le côté serveur. Essayez quelque chose comme ceci:

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

lorsque vous écrivez un @ avec razor view engine, vous écrivez une instruction qui sera traitée côté serveur à la fin de cette commande. Dans votre cas, vous souhaitez ajouter un paramètre dans l'URL qui provient du javascript, donc, concattez simplement du côté client la valeur avec l'URL générée par le @Url assistant.

PS: je suppose que vous utilisez les tables de routage par défaut.

29
Felipe Oriani

Une autre façon consiste à créer un espace réservé, puis à le remplacer:

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