예제 #1
0
        public Task BindModelAsync(ModelBindingContext bindingContext)
        {
            ManagerViewModel viewModel = new ManagerViewModel();

            foreach (var Property in typeof(ManagerViewModel).GetProperties())
            {
                PropertyInfo info  = viewModel.GetType().GetProperty(Property.Name);
                var          value = bindingContext.ValueProvider.GetValue(Property.Name);
                if (Property.Name.Equals("Account"))
                {
                    var count = _repositoryEF.Count(s => s.Account.Equals(value));
                    if (count > 0)
                    {
                        bindingContext.ModelState.AddModelError("Account", "该账户已存在");
                        return(Task.CompletedTask);
                    }
                    else
                    {
                        info.SetValue(viewModel, value);
                    }
                }
                else
                {
                    info.SetValue(viewModel, value, null);
                }
            }
            bindingContext.Result = ModelBindingResult.Success(viewModel);



            //string ParameterName = bindingContext.ModelMetadata.ParameterName;

            //string val = bindingContext.HttpContext.Request.Form[ParameterName];

            //if (String.IsNullOrEmpty(val))
            //{
            //    val = bindingContext.HttpContext.Request.Query[ParameterName];
            //}



            ////根据名称获取传递的值
            //ValueProviderResult ValueResult = bindingContext.ValueProvider.GetValue(ParameterName);
            ////从请求的参数集合中,拿到第一个参数
            //string value11 = ValueResult.FirstValue;

            //var modelName = bindingContext.ModelName;
            //var valueProviderResult = bindingContext.ValueProvider.GetValue(modelName);
            //if (valueProviderResult == ValueProviderResult.None)
            //{
            //    return Task.CompletedTask;
            //}
            //bindingContext.ModelState.SetModelValue(modelName,valueProviderResult);
            //var value = valueProviderResult.FirstValue;
            //if (string.IsNullOrEmpty(value))
            //{
            //    return Task.CompletedTask;
            //}
            //var count = _repositoryEF.Count(s => s.Account.Equals(value));
            //if (count > 0)
            //{
            //    bindingContext.ModelState.AddModelError("Account", "该账户已存在");
            //    return Task.CompletedTask;
            //}
            //var result = bindingContext.Result;
            //bindingContext.Result = ModelBindingResult.Success(value);
            return(Task.CompletedTask);
        }