Share constants between C# and Javascript in MVC Razor

前端 未结 4 1029
一个人的身影
一个人的身影 2020-12-02 08:36

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
{
             


        
4条回答
  •  长情又很酷
    2020-12-02 09:14

    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())
    

提交回复
热议问题