/// <param name="typeName">类名称(注意:内部类的调用方式  ContainerClassName+InternalClassName)</param>
        /// <param name="selectedValue"></param>
        /// <param name="isAllowedEmpty">是否允许空选项</param>
        /// <returns></returns>
        public static IEnumerable <SelectListItem> GenerateItemsFromStringItems(string typeName,
                                                                                string selectedValue = null, bool isAllowedEmpty = false)
        {
            var results = new List <SelectListItem>();

            var stringItems = StringItem.GetTypeItems(typeName);

            if (stringItems != null && stringItems.Length > 0)
            {
                int index = 0;
                foreach (StringItem si in stringItems)
                {
                    var value = si.Code;
                    var text  = si.Name;

                    var listItem = new SelectListItem()
                    {
                        Text  = text,
                        Value = value
                    };

                    if (!string.IsNullOrWhiteSpace(selectedValue) && value == selectedValue)//设置选中值
                    {
                        listItem.Selected = true;
                    }

                    if (string.IsNullOrWhiteSpace(selectedValue) && !isAllowedEmpty && index == 0) //如果不允许为空,则默认选中第一项
                    {
                        listItem.Selected = true;
                    }

                    results.Add(listItem);

                    index++;
                }
            }

            if (isAllowedEmpty)//是否允许空选项
            {
                results.Insert(0, new SelectListItem()
                {
                    Text = string.Empty, Value = string.Empty
                });
            }

            return(results);
        }