Utilisez Sepstra js File et utilisez Url Helpers avec ASP.NEt MVC 3 et Razor View Engine

Je pose une question similaire ici et Darin Dimitrov répond que nous ne pouvons pas utiliser Url helper comme $.ajax({ url: '@Url.Action("Index")', . . . dans un fichier js séparé, donc quelle est votre suggestion? Pour utiliser Url helper dans la page de visualisation et passer à javascript, je ne veux pas utiliser l'URL du code dur, je dois le trouver avec Url helper.

Utilisez un champ caché pour stocker votre url, puis utilisez javascript pour lire le champ caché, puis utilisez celui dans votre code. De cette façon, vous pouvez garder le fichier JS séparé à la vue. Quelque chose comme ça:

 //In Your View @Html.Hidden("MyURL", Url.Action("Index")) //In Your JS var myUrl = $("#MyURL").val(); $.ajax({ url: myUrl , . . . 

La manière la plus simple est simplement de créer une variable globale appelée quelque chose et de la faire référence dans votre JS externe

 var baseURL = '@Url.Action("Index")'; 

À l'intérieur de votre JS externe

 $.ajax({ url: baseURL + "Action" 

Vous pouvez utiliser RazorJS à cette fin. Il permet d'écrire Razor-Style C # ou VB.NET dans vos fichiers JavaScript. Il y a une courte description disponible ici .

Il n'est pas nécessaire d'avoir un champ caché, même cela fonctionne aussi dans le fichier .js externe.

Var myUrl = / ControllerName / ActionName;

 $.ajax({ url: myUrl , . . 

Jetez un oeil à la génération de fichiers JavaScript externes à l'aide des vues partielles de rasoirs . Dans cette publication, je décris comment vous pouvez utiliser des vues Razor régulières et un filtre d'action personnalisé pour rendre les fichiers JavaScript externes qui peuvent contenir des codes Razor.

J'ai utilisé une approche similaire à raklos, mais cherchais à obtenir le chemin du répertoire racine dans tous les endroits, alors je suis allé avec le code ci-dessous.

 @Html.Hidden("AppUrl", Url.Content("~"))