如何在Javascript中使用C#枚举

str*_*str 5 javascript c# jquery enums

我的C#代码中有一个枚举,我想在我的jQuery验证规则中从枚举中获取名称.

枚举:

public enum EnumItemField
{
    Zero = 0,
    One = 1,
    Two = 2,
    Three = 3,
    Four = 4,
    Five = 5,
} 
Run Code Online (Sandbox Code Playgroud)

验证:

function updateFieldStatus() {
}

$(document).ready(function () {
$("#IntegrationService").validate({
    rules: {
        //Set range of Start
        "config.EnumFormat[Zero].Start": {
            required: true,
            digits: true,
            range: [1, 200]
        },
        "config.EnumFormat[One].Start": {
            required: true,
            digits: true,        
            range: [1, 200]
        },
    },
    submitHandler: function () {
        MsgBoxService.show({
            //setId: "saveload",
            //objectId: "asrun"
        });
    },
}); 
Run Code Online (Sandbox Code Playgroud)

这确实有效,但我想做这样的事情:

"config.EnumFormat[" + item + "].Start": {
    required: true,
    digits: true,
    range: [1, 200]
}
Run Code Online (Sandbox Code Playgroud)

在C#中我可以这样得到名字:

foreach (var item in Enum.GetNames(typeof(EnumItemField)))
Run Code Online (Sandbox Code Playgroud)

我怎样才能在javascript中创建它?谢谢你的建议!

Pra*_*man 6

您可以创建与JavaScript对象相同的东西.

EnumItemField = {
    "Zero": 0,
    "One": 1,
    "Two": 2,
    "Three": 3,
    "Four": 4,
    "Five": 5
}
Run Code Online (Sandbox Code Playgroud)

请不要忘记删除最后一个,逗号.

您可以使用以下值:

EnumItemField.Zero     // 0
EnumItemField["Zero"]  // 0
Run Code Online (Sandbox Code Playgroud)

迭代?没问题:

for (var item in EnumItemField) {
  item;                // Zero
  EnumItemField[item]; // 0
}
Run Code Online (Sandbox Code Playgroud)