我的C#代码中有一个enum,我想在javascript中得到同样的enum.

有没有办法在不进行硬编码的情况下做到这一点?

推荐答案

可以将所有枚举值序列化为JSON:

private void ExportEnum<T>()
{
    var type = typeof(T);
    var values = Enum.GetValues(type).Cast<T>();
    var dict = values.ToDictionary(e => e.ToString(), e => Convert.ToInt32(e));
    var json = new JavaScriptSerializer().Serialize(dict);
    var script = string.Format("{0}={1};", type.Name, json);
    System.Web.UI.ScriptManager.RegisterStartupScript(this, GetType(), "CloseLightbox", script, true);
}

ExportEnum<MyEnum>();

这注册了如下脚本:

MyEnum={"Red":1,"Green":2,"Blue":3};

Asp.net相关问答推荐

如何处理当前文件中基本文件中的S onClick方法

使用 Asp.Net MVC 和 KnockoutJS 处理日期

在 lambda 表达式中否定 Func

在正则表达式中允许 -(破折号)

为什么微软决定支持 jQuery 如此重要?

如何在 ASP.NET WebForms 中实现 TDD

.NET 站点如何隐藏其文件的 .aspx 扩展名?

asp.net:与其中的用户控件相比,控件/页面的页面生命周期顺序是什么?

使用 Owin 身份验证的服务器端声明缓存

ASP.NET Core 中的授权. [Authorize] 属性总是 401 Unauthorized

Windows 运行 ASP.NET 的 IIS 替代方案

DBContext.Entry 有什么作用?

如何获取当前登录用户的角色列表

Cache.Add 绝对过期 - 是否基于 UTC?

如何判断本地主机

ASP.NET MVC NonAction 含义

判断 IQueryable 结果集的最佳方法是什么?

ASP.Net 哪个用户帐户在 IIS 7 上运行 Web 服务?

ASP.NET 网格视图与列表视图

您的下一个 ASP.NET 项目的 Select 是什么:Web 窗体还是 MVC?