Accéder à une propriété Model dans un fichier javascript?
Est-il possible d'accéder à un Modèle de propriété dans un fichier Javascript externe?
par exemple, Dans "somescript.js" fichier
var currency = '@Model.Currency';
alert(currency);
Sur mon point de Vue
<script src="../../Scripts/somescript.js" type="text/javascript">
Ce qui ne fonctionne pas, mais si j'ai mis le javascript directement dans la vue à l'intérieur des balises de script, puis il ne travail? Cela signifie avoir à mettre le code dans la page tout le temps au lieu de charger le fichier de script externe comme ceci:
@model MyModel;
<script lang=, type=>
var currency = '@Model.Currency';
alert(currency);
</script>
Est-il un moyen de contourner cela?
source d'informationauteur BlueChippy
Vous devez vous connecter pour publier un commentaire.
Il n'y a aucun moyen de mettre en œuvre MVC /Rasoir code en JS fichiers.
Vous devez définir la variable de données dans votre code HTML (dans le .cshtml fichiers), et de ce point de vue conceptuel OK et ne pas violer la séparation des préoccupations (générée par le Serveur HTML ou code de script client) parce que si vous pensez à ce sujet, ces valeurs de la variable sont d'un serveur de préoccupation.
Prendre un coup d'oeil à cette (partielle mais agréable) solution de contournement: À l'aide de C# en ligne à l'intérieur de Fichier Javascript dans Framework MVC
Je me suis attaquée à ce problème en utilisant des attributs de données, avec jQuery. Il est très lisible le code, et sans la nécessité d'une vue partielle ou d'exécution statique javascript par l'intermédiaire d'un ViewEngine. Le fichier JavaScript est entièrement statique et sera mis en cache normalement.
Index.cshtml:
Index.js:
_Layout.cshtml (facultatif, mais une bonne habitude):
Ce que vous pourriez faire est de passer le rasoir balises en tant que variable.
Dans le Fichier de rasoir>
dans le fichier JS >
Essayer JavaScriptModel ( http://jsm.codeplex.com ):
Il suffit d'ajouter le code suivant à votre contrôleur de l'action:
Maintenant, vous pouvez accéder à la variable "Monnaie" en JavaScript.
Si cette variable devrait être disponible sur le trou du site, le mettre dans un filtre. Un exemple sur la façon d'utiliser JavaScriptModel à partir d'un filtre peut être trouvée dans la documentation.
Vous pouvez toujours essayer RazorJs. C'est à peu près résout pas être en mesure d'utiliser un modèle dans vos fichiers js RazorJs
Ce que j'ai fait était de créer un js objet à l'aide de l'Invocation de la Méthode de motif, vous pouvez ensuite appeler à partir du fichier js externe. Comme js utilise des variables globales, je l'encapsuler afin de garantir l'absence de conflits à partir d'autres bibliothèques js.
Exemple:
Dans la vue
Maintenant à l'intérieur de la page externe vous pouvez ensuite récupérer les données avec un protégé de la portée afin de s'assurer qu'il n'entre pas en conflit avec d'autres variables globales en js.