Partager des constantes entre C# et Javascript MVC, Razor
Je voudrais utiliser des constantes de chaîne sur les deux côtés, en C# sur le serveur et en Javascript sur le client.
Je encapsuler mon constantes en C# class
namespace MyModel
{
public static class Constants
{
public const string T_URL = "url";
public const string T_TEXT = "text";
. . .
}
}
J'ai trouvé un moyen d'utiliser ces constantes en Javascript en utilisant la syntaxe Razor, mais il a l'air bizarre pour moi:
@using MyModel
<script type="text/javascript">
var T_URL = '@Constants.T_URL';
var T_TEXT = '@Constants.T_TEXT';
. . .
var selValue = $('select#idTagType').val();
if (selValue == T_TEXT) { ...
Est-il plus "élégant" de partage des constantes entre C# et Javascript?
(Ou au moins plus automatique, donc je n'ai pas à faire des changements dans les deux fichiers)
- C'est le meilleur moyen que j'ai trouvé. Êtes-vous envie de quelque chose qui va gratter le votre .fichiers cs pour
public const string
et automatiquement recréer ces valeurs commevar
dans le javascript pour vous? Je ne peux pas imaginer que ce serait intrinsèquement utile tout le temps. - Un addendum à mon dernier commentaire. Je n'ai pas réussi à préavis, les présentes ont été constantes. Que, d'autre part, est utile.
Vous devez vous connecter pour publier un commentaire.
La façon dont vous utilisez, il est dangereux. Imaginez certaines de vos constantes contenues un devis, ou pire encore, certains des caractères => ce serait briser votre javascripts.
Je vous recommande la rédaction d'un contrôleur d'action qui servira à toutes les constantes comme javascript:
puis de la mise en page de référence de ce script:
Maintenant, chaque fois que vous besoin d'une constante dans vos scripts, vous utilisez simplement par son nom:
Vous pouvez utiliser un helper HTML pour la sortie du script nécessaire, et utiliser la réflexion pour saisir les champs et leurs valeurs, de sorte qu'il sera automatiquement mise à jour.
Ma version pour créer un espace de noms d'objet javascript à partir de mon C# constantes qui est immuable:
Utilisé comme cela, dans de Rasoir:
Plutôt que de stocker vos données constantes dans la classe de C#, de la stocker dans un statique config/fichier de constantes.
Simplement l'enregistrer dans un fichier de format (json, xml, cvs, peu importe) puis de le charger à partir à la fois de la client & serveur.
Cela signifie que votre compte soit de la création d'une classe en C# à la volée lors de l'exécution à l'aide de la magie noire réflexion ou tout simplement avoir une table de hachage /dictionnaire contenant votre constantes sous les touches.
jQuery.getJSON
,JsonReaderWriterFactor
.cs
&.js
sont statiques écrire une fois que les fichiers. Le.json
est dynamique