如何在JavaScript中使用C#枚举值

时间:2011-04-04 10:33:35

标签: c# javascript asp.net enums

我在C#中有一个枚举,就像Category.cs一样 在下拉列表中,我们是绑定值 因此,如果用户在下拉列表中选择某个特定值,则会隐藏一个div 所以我想在javascript中获取枚举值,即想要将枚举值与javascript中的一个选定值进行比较。

马赫什

2 个答案:

答案 0 :(得分:2)

假设您有enum这样的数字值:

public enum Colors
{
   Yellow = 1,
   Red,
   Blue,
   Green,
   Purple
}

首先,在后面的代码(Page_Load事件)中注册JavaScript代码,它将构建包含相同数据的客户端结构:

string strJS = string.Format("var arrColors = {{{0}}}; ",
    string.Join(", ", Enum.GetNames(typeof(Colors)).ToList().ConvertAll(key =>
{
    return string.Format("{0}: {1}", key, (int)((Colors)Enum.Parse(typeof(Colors), key)));
}).ToArray()));
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "enum", strJS, true);

现在arrColors是JS变量,包含enum的键和值。

要使用它,请输入以下代码:

<script type="text/javascript">
   function SelectionChanged(oDDL) {
      var selectedValue = oDDL.value;
      var enumValue = arrColors[selectedValue] || "N/A";
      alert("enum value for '" + selectedValue + "' is: " + enumValue);
   }
</script>

下拉应该如下所示:

<select onchange="SelectionChanged(this);">
    <option>Select..</option>
    <option value="Yellow">Yellow</option>
    <option value="Green">Green</option>
</select>

答案 1 :(得分:0)

System.Enum.GetNames(typeof(yourenumerationtype)) - 返回一个字符串数组,表示枚举项的名称