2017-08-08 26 views
1

我需要一些關於在我們的Web項目中一般使用枚舉的指導。更詳細地說,我的意思是我們的查找表,如PersonType,PrivilegeType,ContactType等將在dll(或C#文件,每個枚舉一個文件)中創建,比如說Enums.dll,然後將這些枚舉添加爲常量我們的「共同」 AngularJS模塊,導致這樣的事情,例如:C#從數據庫枚舉到AngularJS常量

angular 
.module('common', []) 
.constant('ePrivilegeType', { 
    NoPermissions: 1, 
    ViewOnly: 2, 
    ViewAndUpdate: 3 
}) 
.constant('ePersonType', { 
    Administration: 1, 
    Student: 2, 
    Father: 3, 
    Mother: 4 
}); 

就是這種工作流的常見和接受的呢?我們如何實現這種工作流程?在我們所有的項目中使用枚舉都會使我們的生活變得更加輕鬆。

回答

2

如果這些匹配僅用於向用戶顯示(例如在組合框中),我使用了爲我提供這些值的web api。所以在angularjs中使用的數據對象內仍然是這個幻數。但是從/api/enum/privilegeTypes下的服務器,你會回來對象的數組格式

[{ 
    value: 1, 
    name: "NoPermissions", 
    description: "This is not allowed" 
}, ...] 

在服務器(在.NET)創建一個簡單的類(如EnumWrapper)和工廠方法(如EnumWrapper.From<PrivilegeType>()EnumWrapper.From(enumTypeName)),它遍歷所有的枚舉值(與Enum.GetValues())並創建所需的列表並返回它。

public enum PrivilegeType 
{ 
    [Description("Access not allowed")] 
    NoPermissions = 1, 
    [Description("Read only ")] 
    ViewOnly = 2, 
    [Description("Read and write access")] 
    ViewAndUpdate = 3 
} 

通過使用這種方法,你仍然有神奇的數字數據中的對象,但你可以用一些有意義的文本呈現給用戶的可用選項,如果你改變了枚舉值或名稱,你只需要改變他們在服務器端而不是在客戶端。