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 数组变量 |