public Tuple<string[], string[]> Get()
        {
            HttpActionContext actionContext = new HttpActionContext
            {
                ControllerContext = this.ControllerContext
            };
            ModelMetadataProvider metadataProvider = this.Configuration.Services.GetModelMetadataProvider();
            ModelMetadata metadata = metadataProvider.GetMetadataForType(null, typeof(DemoModel));
            IValueProvider valueProvider = new CompositeValueProviderFactory(this.Configuration.Services.GetValueProviderFactories()).GetValueProvider(actionContext);
            ModelBindingContext bindingContext = new ModelBindingContext
            {
                ModelMetadata = metadata,
                ValueProvider = valueProvider,
                ModelState = actionContext.ModelState
            };
            actionContext.Bind(bindingContext);

            //验证之前的错误消息
            string[] errorMessages1 = actionContext.ModelState.SelectMany(
                item => item.Value.Errors.Select(
                error => error.ErrorMessage)).ToArray();

            //验证之前的错误消息
            bindingContext.ValidationNode.Validate(actionContext);
            string[] errorMessages2 = actionContext.ModelState.SelectMany(
                item => item.Value.Errors.Select(
                error => error.ErrorMessage)).ToArray();
            return new Tuple<string[], string[]>(errorMessages1, errorMessages2);
        }
        public override System.Threading.Tasks.Task ExecuteBindingAsync(System.Web.Http.Metadata.ModelMetadataProvider metadataProvider, HttpActionContext actionContext, System.Threading.CancellationToken cancellationToken)
        {
            CompositeValueProviderFactory valueproviderFactory = new CompositeValueProviderFactory(this.ValueProviderFactories);
            string parameterName = base.Descriptor.ParameterName;
            Type parameterType = base.Descriptor.ParameterType;
            string prefix = base.Descriptor.Prefix;
            ModelBindingContext context = new ModelBindingContext()
            {
                ModelName = prefix ?? parameterName,
                FallbackToEmptyPrefix = prefix == null,
                ModelMetadata = metadataProvider.GetMetadataForType(null, parameterType),
                ModelState = actionContext.ModelState,
                ValueProvider = valueproviderFactory.GetValueProvider(actionContext)

            };
            object argument="";
               // this.Binder.BindModel() ? context.Model : base.Descriptor.DefaultValue ;
            base.SetValue(actionContext, argument);
            TaskCompletionSource<AsyncVoid> Source = new TaskCompletionSource<AsyncVoid>();
            Source.SetResult(new AsyncVoid());
            return Source.Task;
        }