EDIT
pouvez écrire les ressources localisées nécessaires à un objet JavaScript (hachage), puis l'utiliser pour la recherche de vos objets créés dynamiquement. Je pense que c'est mieux que de retourner au serveur pour les traductions. Ceci est similaire à l'ajout via viewdata, mais peut être un peu plus flexible. FWIW, je pourrais considérer que les ressources de localisation font partie de la vue, et non du contrôleur.
Dans la vue:
<script type="text/javascript"
src='<%= Url.Content("~/Resources/Load?translate=Close,Open" %>'></script>
qui génèrerait quelque chose comme:
var local = {};
local.Close = "Close";
local.Open = "Open";
Sans arguments, il génèrerait l'ensemble de hachage de traduction. L'utilisation d'arguments vous donne la possibilité de le personnaliser par vue.
Vous pouvez ensuite l'utiliser dans vos fichiers JavaScript comme:
$(function(){
$('#button').click(function() {
$("<img src=... title='" + local.Close + "' />")
.appendTo("#someDiv")
.click(function() { ... });
});
});
En fait, je ne suis pas trop embêté de garder mon code JavaScript de mon point de vue aussi longtemps que le code JavaScript est localisé dans un conteneur . Typiquement, je vais définir ma page maître avec 4 zone de contenu: titre, en-tête, principal et scripts. Le titre, l'en-tête et la main vont là où vous vous attendez et la zone des scripts va au bas du corps.
J'ai placé tous mes includes JavaScript, y compris ceux pour viewusercontrols, dans le conteneur des scripts. Le code JavaScript spécifique à la vue vient après l'inclusion. Je refactorise le code partagé en scripts au besoin. J'ai pensé à utiliser une méthode de contrôleur pour assembler les scripts, c'est-à-dire inclure plusieurs scripts en utilisant une seule requête, mais je n'ai pas encore trouvé de solution. Ceci a l'avantage de garder le code JavaScript séparé pour plus de lisibilité, mais aussi d'injecter facilement des données de modèle ou de vue dans le code JavaScript si nécessaire.
« Je javascript veux être séparé de vue. » == "Aussi une bonne pratique pour garder votre javascript séparé de votre mark up.". <= et c'est le problème pourquoi <%= foo %> ne fonctionnera pas. –
Btw, pourquoi attacher le gestionnaire onclick sur JS onload est préférable? –
J'ai raté la partie "généré par JS" de votre question - juste scannée juste au-dessus. Dans ce cas, je considérerais écrire les données localisées dans la vue et charger le javascript depuis un objet local. Va réécrire. – tvanfosson