public enum SiteTypeEnum { 中轉部 = 1, 網點 = 2 }
還有 BooleanEnum 和 OptTypeEnum 這兩個枚舉,這裏暫且省略了它們的定義。javascript
這裏總共轉化了 3 個枚舉java
public class UtilityController : BaseController { [CheckLogin] [HttpPost] public JsonResult GetEnumData() { JsonResult<object> result = new JsonResult<object>(); string booleanEnumJson = typeof(BooleanEnum).EnumToJson(); string siteTypeEnumJson = typeof(SiteTypeEnum).EnumToJson(); string optTypeEnumJson = typeof(OptTypeEnum).EnumToJson(); result.Data = new { enumData = new Dictionary<string, object>() { { "booleanEnumJson", booleanEnumJson }, { "siteTypeEnumJson", siteTypeEnumJson }, { "optTypeEnumJson", optTypeEnumJson } } }; return Json(result, JsonRequestBehavior.AllowGet); } }
注意,除了枚舉自身名稱以外,其他之處一概採用 -Json 後綴,方便識別。ajax
服務端的枚舉,對應於 js 端的數組數組
// 布爾值 var BooleanEnum = [ ]; // 網點類型 var SiteTypeEnum = [ ]; // 操做類型 var OptTypeEnum = [ ];
此處的代碼與上述定義同屬一個 js 文件,這裏不須要「自執行函數」,以確保枚舉數組能夠被全局訪問。async
$(document).ready(function () { var urlEnum = { GetEnumData: "/Utility/GetEnumData" }; // 發起請求 $.ajax({ data: {}, type: "POST", dataType: "JSON", async: false, url: urlEnum.GetEnumData, success: function (result) { console.info("返回的枚舉數據爲:↓ "); console.info(JSON.stringify(result.Data, null, 4)); if (result.Status) { var data = result.Data; bindData(data, "booleanEnumJson", "BooleanEnum", BooleanEnum); bindData(data, "siteTypeEnumJson", "SiteTypeEnum", SiteTypeEnum); bindData(data, "optTypeEnumJson", "OptTypeEnum", OptTypeEnum); } else { // 提示失敗 alert(result.StatusMessage); } } }); // end ajax /* * 綁定數據 * data 數據源 * targetArray 數組變量 */ function bindData(data, stringJson, typeOfEnum, targetArray) { // 布爾值 var enumJson = $.parseJSON(data.enumData[stringJson])[typeOfEnum]; $.each(enumJson, function (text, val) { var obj = { name: text, value: val }; targetArray.push(obj); }); } });
參數說明:函數
參數名 | header含義 |
---|---|
data | 包含全部枚舉的數據源 |
stringJson | Dictionary 的鍵,好比 siteTypeEnumJson |
typeOfEnum | 枚舉名稱,好比 SiteTypeEnum |
targetArray | js 數組變量 |