به نظر من موضوع رو خیلی پیچیده کردی. برای تولید json لازم نیست که از کتابخانه خاصی استفاده کنی با همون استرینگ منیوپولیشن ساده هم میشه این کار را کرد:
public static class EnumHelper
{
public static Dictionary<string,EnumValueType> ToDictionary<EnumType,EnumValueType>()
{
return Enum.GetValues(typeof(EnumType)).Cast<EnumValueType>().ToDictionary(i=>Enum.GetName(typeof(EnumType),i),i=>i);
}
public static string ToJson<EnumType>()
{
return "{" + string.Join(",", ToDictionary<EnumType,int>().Select(i=>string.Format(@"{{""{0}"":{1}}}",i.Key,i.Value)).ToArray())+ "}" ;
}
}
کلاس ساده بالا به سادگی json مورد نیاز را تولید میکند.
در ضمن برای اینجکت کردنش به صفحه هم لازم نیست که از فیلد مخفی استفاده کنی. به جاش json را مستقیم در محل مورد نظر رندر کن:
در Asp.Net MVC Razor:
var x = @EnumHelper.ToJson<MyEnum()
در Asp.Net Web Forms :
var x = <%=EnumHelper.ToJson<MyEnum>()%>
همچنین همانطور که در مثالهای فوق نشان داده ام حتی لازم نیست از JSON.Parse استفاده کنی.
البته من اینها را بر اساس ذهنیاتم خیلی سریع نوشتم و کدهای فوق را تست نکرده ام که ببینم درست کار میکنند یا نه. اما منظورم این بود که بپرسم چرا از فیلد مخفی استفاده کردی و چرا از JSON.Parse استفاده کردی و اینکه چرا از JavaScriptSerializer استفاده کردی؟