示例#1
0
        private void AddDefaultData()
        {
            int optionscount = _project3Context.Options.Count();

            if (optionscount > 0)
            {
                return;
            }
            //添加管理员用户
            var adminuser = new Users();

            adminuser.username = "******";
            adminuser.password = MD5Extension.PassEncrypt("admin");
            _project3Context.Users.Add(adminuser);

            //添加默认设置
            var  data = new OptionsModel();
            Type t    = data.GetType();

            foreach (var pi in t.GetProperties())
            {
                object value  = pi.GetValue(data);
                string name   = pi.Name;
                var    option = new Options();
                option.name  = name;
                option.value = value != null?value.ToString() : "";

                _project3Context.Options.Add(option);
            }



            _project3Context.SaveChanges();
        }
示例#2
0
        public Task BindModelAsync(ModelBindingContext bindingContext)
        {
            if (bindingContext == null)
            {
                throw new ArgumentNullException(nameof(bindingContext));
            }

            if (bindingContext.ModelType != typeof(OptionsModel))
            {
                return(Task.CompletedTask);
            }

            var parameters = new Dictionary <string, string>();

            foreach (var parameter in bindingContext.ModelType.GetProperties())
            {
                var valueProviderResult = bindingContext.ValueProvider.GetValue(parameter.Name);
                if (valueProviderResult.FirstValue != null)
                {
                    parameters.Add(parameter.Name, valueProviderResult.FirstValue);
                }
            }

            var result = new OptionsModel();

            PropertyInfo[] properties = result.GetType().GetProperties();
            foreach (var property in properties)
            {
                if (!parameters.Any(p => p.Key.Equals(property.Name, StringComparison.InvariantCultureIgnoreCase)))
                {
                    continue;
                }

                KeyValuePair <string, string> parameter = parameters.First(p => p.Key.Equals(property.Name, StringComparison.InvariantCultureIgnoreCase));

                Type propertyType = result.GetType().GetProperty(property.Name).PropertyType;
                Type newType      = Nullable.GetUnderlyingType(propertyType) ?? propertyType;

                object newObject = Convert.ChangeType(parameter.Value, newType);
                result.GetType().GetProperty(property.Name).SetValue(result, newObject, null);
            }

            bindingContext.Result = ModelBindingResult.Success(result);
            return(Task.CompletedTask);
        }
示例#3
0
        /// <summary>
        /// 是否存在配置项名
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        private bool IsHasOptionName(string name)
        {
            var  data = new OptionsModel();
            Type t    = data.GetType();

            foreach (var pi in t.GetProperties())
            {
                if (pi.Name == name)
                {
                    return(true);
                }
            }
            return(false);
        }
示例#4
0
        public async Task <OptionsModel> GetAsync()
        {
            var  data = new OptionsModel();
            Type t    = data.GetType();

            foreach (var pi in t.GetProperties())
            {
                string name   = pi.Name;
                var    option = await _project3DB.Options.Where(m => m.name == name).SingleOrDefaultAsync();

                if (option != null)
                {
                    pi.SetValue(data, option.value);
                }
            }

            return(data);
        }
示例#5
0
 /// <summary>
 /// Convert RelationshipDetails to JSON
 /// </summary>
 /// <param name="th"></param>
 /// <returns></returns>
 public static string ToJSON(this OptionsModel th)
 {
     th.Options = th.Options.OrderBy(o => o.DisplayName).ToArray();
     using (MemoryStream memoryStream = new MemoryStream())
     {
         DataContractJsonSerializer serializer = new DataContractJsonSerializer(th.GetType());
         serializer.WriteObject(memoryStream, th);
         return(Encoding.UTF8.GetString(memoryStream.ToArray()));
     }
 }