I\'d like to use string constants on both sides, in C# on server and in Javascript on client. I encapsulate my constants in C# class
namespace MyModel
{
My version to create a namespaced javascript object from my C# constants that is immutable:
public static HtmlString GetConstants()
{
StringBuilder jsConstant = new StringBuilder();
jsConstant.Append("myApp." + typeof(T).Name + " = Object.freeze({");
foreach(var item in typeof(T).GetFields())
{
jsConstant.Append(string.Format("{0}:'{1}'",item.Name,item.GetValue(null).ToString()) + ",");
}
jsConstant.Remove(jsConstant.Length - 1, 1);
jsConstant.Append("})");
return new HtmlString(jsConstant.ToString());
}
Used like this in Razor:
@(HtmlHelpers.GetConstants())