public override IValueProvider GetValueProvider(ModelBindingExecutionContext modelBindingExecutionContext) {
            if (modelBindingExecutionContext == null) {
                throw new ArgumentNullException("modelBindingExecutionContext");
            }

            return new FormValueProvider(modelBindingExecutionContext);
        }
        public bool BindModel(ModelBindingExecutionContext modelBindingExecutionContext, ModelBindingContext bindingContext)
        {
            ModelBinderUtil.ValidateBindingContext(bindingContext, typeof(ComplexModel), false /* allowNullModel */);

            ComplexModel complexModel = (ComplexModel)bindingContext.Model;

            foreach (ModelMetadata propertyMetadata in complexModel.PropertyMetadata)
            {
                ModelBindingContext propertyBindingContext = new ModelBindingContext(bindingContext)
                {
                    ModelMetadata = propertyMetadata,
                    ModelName     = ModelBinderUtil.CreatePropertyModelName(bindingContext.ModelName, propertyMetadata.PropertyName)
                };

                // bind and propagate the values
                IModelBinder propertyBinder = bindingContext.ModelBinderProviders.GetBinder(modelBindingExecutionContext, propertyBindingContext);
                if (propertyBinder != null)
                {
                    if (propertyBinder.BindModel(modelBindingExecutionContext, propertyBindingContext))
                    {
                        complexModel.Results[propertyMetadata] = new ComplexModelResult(propertyBindingContext.Model, propertyBindingContext.ValidationNode);
                    }
                    else
                    {
                        complexModel.Results[propertyMetadata] = null;
                    }
                }
            }

            return(true);
        }
        public bool BindModel(ModelBindingExecutionContext modelBindingExecutionContext, ModelBindingContext bindingContext) {
            ModelBindingContext newBindingContext = bindingContext;
            IModelBinder binder = Providers.GetBinder(modelBindingExecutionContext, bindingContext);
            if (binder == null && !String.IsNullOrEmpty(bindingContext.ModelName)
                && bindingContext.ModelMetadata.IsComplexType) {

                // fallback to empty prefix?
                newBindingContext = new ModelBindingContext(bindingContext) { 
                    ModelName = String.Empty,
                    ModelMetadata = bindingContext.ModelMetadata
                };
                binder = Providers.GetBinder(modelBindingExecutionContext, newBindingContext);
            }

            if (binder != null) {
                bool boundSuccessfully = binder.BindModel(modelBindingExecutionContext, newBindingContext);
                if (boundSuccessfully) {
                    // run validation
                    newBindingContext.ValidationNode.Validate(modelBindingExecutionContext, parentNode:null);
                    return true;
                }
            }

            return false; // something went wrong
        }
Exemple #4
0
 public bool BindModel(ModelBindingExecutionContext modelBindingExecutionContext, ModelBindingContext bindingContext)
 {
     Name   = modelBindingExecutionContext.HttpContext.Request["Name"];
     Age    = Convert.ToInt32(modelBindingExecutionContext.HttpContext.Request["Age"]);
     Reason = modelBindingExecutionContext.HttpContext.Request["Reason"];
     return(true);
 }
        public bool BindModel(ModelBindingExecutionContext modelBindingExecutionContext, ModelBindingContext bindingContext) {
            ModelBinderUtil.ValidateBindingContext(bindingContext);

            ValueProviderResult vpResult = bindingContext.UnvalidatedValueProvider.GetValue(bindingContext.ModelName, skipValidation: !bindingContext.ValidateRequest);
            if (vpResult == null) {
                return false; // no entry
            }

            object newModel;
            bindingContext.ModelState.SetModelValue(bindingContext.ModelName, vpResult);
            try {
                newModel = vpResult.ConvertTo(bindingContext.ModelType);
            }
            catch (Exception ex) {
                if (IsFormatException(ex)) {
                    // there was a type conversion failure
                    string errorString = ModelBinderErrorMessageProviders.TypeConversionErrorMessageProvider(modelBindingExecutionContext, bindingContext.ModelMetadata, vpResult.AttemptedValue);
                    if (errorString != null) {
                        bindingContext.ModelState.AddModelError(bindingContext.ModelName, errorString);
                    }
                }
                else {
                    bindingContext.ModelState.AddModelError(bindingContext.ModelName, ex);
                }
                return false;
            }

            ModelBinderUtil.ReplaceEmptyStringWithNull(bindingContext.ModelMetadata, ref newModel);
            bindingContext.Model = newModel;
            return true;
        }
 public bool BindModel(ModelBindingExecutionContext modelBindingExecutionContext,
     System.Web.ModelBinding.ModelBindingContext bindingContext)
 {
     var valueProviderResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
     bindingContext.Model = BindModelImpl(valueProviderResult != null ? valueProviderResult.AttemptedValue : null);
     return bindingContext.Model != null;
 }
Exemple #7
0
        private IValueProvider GetCustomValueProvider(ModelBindingExecutionContext modelBindingExecutionContext, ParameterInfo parameterInfo, ref string modelName, out bool validateRequest)
        {
            validateRequest = true;
            object[] valueProviderAttributes = parameterInfo.GetCustomAttributes(typeof(IValueProviderSource), false);

            if (valueProviderAttributes.Count() > 1)
            {
                throw new NotSupportedException(SR.GetString(SR.ModelDataSourceView_MultipleValueProvidersNotSupported, parameterInfo.Name));
            }

            if (valueProviderAttributes.Count() > 0)
            {
                IValueProviderSource valueProviderAttribute = (IValueProviderSource)valueProviderAttributes[0];
                if (valueProviderAttribute is IModelNameProvider)
                {
                    string name = ((IModelNameProvider)valueProviderAttribute).GetModelName();
                    if (!String.IsNullOrEmpty(name))
                    {
                        modelName = name;
                    }
                }
                if (valueProviderAttribute is IUnvalidatedValueProviderSource)
                {
                    validateRequest = ((IUnvalidatedValueProviderSource)valueProviderAttribute).ValidateInput;
                }
                return(valueProviderAttribute.GetValueProvider(modelBindingExecutionContext));
            }
            return(null);
        }
		public void BlankKeyValueProviderTest()
		{
			StateController.Navigate("d0");
			ModelBindingExecutionContext context = new ModelBindingExecutionContext(new MockHttpContext(), new ModelStateDictionary());
			NavigationDataValueProvider provider = new NavigationDataValueProvider(context, false, null);
			Assert.IsNull(provider.GetValue(""));
		}
        public IValueProvider GetValueProvider(ModelBindingExecutionContext modelBindingExecutionContext) {
            if (modelBindingExecutionContext == null) {
                throw new ArgumentNullException("modelBindingExecutionContext");
            }

            return new UserProfileValueProvider(modelBindingExecutionContext);
        }
        public bool BindModel(ModelBindingExecutionContext modelBindingExecutionContext, System.Web.ModelBinding.ModelBindingContext bindingContext)
        {
            var valueProviderResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);

            bindingContext.Model = BindModelImpl(valueProviderResult != null ? valueProviderResult.AttemptedValue : null);
            return(bindingContext.Model != null);
        }
            public bool BindModel(ModelBindingExecutionContext modelBindingExecutionContext, ModelBindingContext bindingContext) {
                ModelBinderUtil.ValidateBindingContext(bindingContext);
                ValueProviderResult vpResult = bindingContext.UnvalidatedValueProvider.GetValue(bindingContext.ModelName);

                // case 1: there was no <input ... /> element containing this data
                if (vpResult == null) {
                    return false;
                }

                string base64string = (string)vpResult.ConvertTo(typeof(string));

                // case 2: there was an <input ... /> element but it was left blank
                if (String.IsNullOrEmpty(base64string)) {
                    return false;
                }

                // Future proofing. If the byte array is actually an instance of System.Data.Linq.Binary
                // then we need to remove these quotes put in place by the ToString() method.
                string realValue = base64string.Replace("\"", String.Empty);
                try {
                    bindingContext.Model = ConvertByteArray(Convert.FromBase64String(realValue));
                    return true;
                }
                catch {
                    // corrupt data - just ignore
                    return false;
                }
            }
        private static string GetValueRequiredResource(ModelBindingExecutionContext modelBindingExecutionContext)

        {
            string userResourceString = GetUserResourceString(modelBindingExecutionContext, "PropertyValueRequired");

            return(userResourceString);
        }
 public override IWebFormsModelBinder GetBinder(ModelBindingExecutionContext modelBindingExecutionContext, WebFormsModelBindingContext bindingContext)
 {
     if (bindingContext.ModelType == typeof(DbGeography))
     {
         return(new DbGeographyModelBinder());
     }
     return(null);
 }
        public ModelValidatingEventArgs(ModelBindingExecutionContext modelBindingExecutionContext, ModelValidationNode parentNode) {
            if (modelBindingExecutionContext == null) {
                throw new ArgumentNullException("modelBindingExecutionContext");
            }

            ModelBindingExecutionContext = modelBindingExecutionContext;
            ParentNode = parentNode;
        }
 public override System.Web.ModelBinding.IModelBinder GetBinder(ModelBindingExecutionContext modelBindingExecutionContext, System.Web.ModelBinding.ModelBindingContext bindingContext)
 {
     if (bindingContext.ModelType == typeof(DbGeography))
     {
         return(new DbGeographyModelBinder());
     }
     return(null);
 }
Exemple #16
0
 public override IModelBinder GetBinder(ModelBindingExecutionContext modelBindingExecutionContext, ModelBindingContext bindingContext)
 {
     if (bindingContext.ModelType == typeof(DateTime))
     {
         return(new MyDateTimeBinder());
     }
     return(null);
 }
 public override System.Web.ModelBinding.IModelBinder GetBinder(
     ModelBindingExecutionContext modelBindingExecutionContext,
     System.Web.ModelBinding.ModelBindingContext bindingContext)
 {
     if (bindingContext.ModelType == typeof (DbGeography))
         return new DbGeographyModelBinder();
     return null;
 }
        public DataAnnotationsModelValidator(ModelMetadata metadata, ModelBindingExecutionContext context, ValidationAttribute attribute)
            : base(metadata, context) {

            if (attribute == null) {
                throw new ArgumentNullException("attribute");
            }

            Attribute = attribute;
        }
        public override IValueProvider GetValueProvider(ModelBindingExecutionContext modelBindingExecutionContext)
        {
            if (modelBindingExecutionContext == null)
            {
                throw new ArgumentNullException("modelBindingExecutionContext");
            }

            return(new ViewStateValueProvider(modelBindingExecutionContext));
        }
        public override IModelBinder GetBinder(ModelBindingExecutionContext modelBindingExecutionContext, ModelBindingContext bindingContext) {
            ModelBinderUtil.ValidateBindingContext(bindingContext);

            if (bindingContext.UnvalidatedValueProvider.ContainsPrefix(bindingContext.ModelName)) {
                return CollectionModelBinderUtil.GetGenericBinder(typeof(IDictionary<,>), typeof(Dictionary<,>), typeof(DictionaryModelBinder<,>), bindingContext.ModelMetadata);
            }
            else {
                return null;
            }
        }
Exemple #21
0
    public bool BindModel(ModelBindingExecutionContext modelBindingExecutionContext, ModelBindingContext bindingContext)
    {
        var      valueProviderResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
        var      inputdate           = valueProviderResult != null ? valueProviderResult.AttemptedValue : null;
        DateTime newDate             = new DateTime();
        bool     success             = DateTime.TryParse(inputdate, CultureInfo.GetCultureInfo("en-GB"), DateTimeStyles.None, out newDate);

        bindingContext.Model = newDate;
        return(bindingContext.Model != null);
    }
		private static string GetUserResourceString(ModelBindingExecutionContext modelBindingExecutionContext, string resourceName, string resourceClassKey)
		{
			if (string.IsNullOrEmpty(resourceClassKey) || modelBindingExecutionContext == null || modelBindingExecutionContext.HttpContext == null)
			{
				return null;
			}
			else
			{
				return modelBindingExecutionContext.HttpContext.GetGlobalResourceObject(resourceClassKey, resourceName, CultureInfo.CurrentUICulture) as string;
			}
		}
        public override IModelBinder GetBinder(ModelBindingExecutionContext modelBindingExecutionContext, ModelBindingContext bindingContext) {
            ModelBinderUtil.ValidateBindingContext(bindingContext);

            if (!bindingContext.ModelMetadata.IsReadOnly && bindingContext.ModelType.IsArray &&
                bindingContext.UnvalidatedValueProvider.ContainsPrefix(bindingContext.ModelName)) {
                Type elementType = bindingContext.ModelType.GetElementType();
                return (IModelBinder)Activator.CreateInstance(typeof(ArrayModelBinder<>).MakeGenericType(elementType));
            }

            return null;
        }
        public override IModelBinder GetBinder(ModelBindingExecutionContext modelBindingExecutionContext, ModelBindingContext bindingContext) {
            ModelBinderUtil.ValidateBindingContext(bindingContext);

            if (bindingContext.ModelType == ModelType) {
                if (SuppressPrefixCheck || bindingContext.UnvalidatedValueProvider.ContainsPrefix(bindingContext.ModelName)) {
                    return _modelBinderFactory();
                }
            }

            return null;
        }
 private static string GetUserResourceString(ModelBindingExecutionContext modelBindingExecutionContext, string resourceName, string resourceClassKey)
 {
     if (string.IsNullOrEmpty(resourceClassKey) || modelBindingExecutionContext == null || modelBindingExecutionContext.HttpContext == null)
     {
         return(null);
     }
     else
     {
         return(modelBindingExecutionContext.HttpContext.GetGlobalResourceObject(resourceClassKey, resourceName, CultureInfo.CurrentUICulture) as string);
     }
 }
        protected ModelValidator(ModelMetadata metadata, ModelBindingExecutionContext modelBindingExecutionContext) {
            if (metadata == null) {
                throw new ArgumentNullException("metadata");
            }
            if (modelBindingExecutionContext == null) {
                throw new ArgumentNullException("modelBindingExecutionContext");
            }

            Metadata = metadata;
            ModelBindingExecutionContext = modelBindingExecutionContext;
        }
        public object BindModel(ModelBindingExecutionContext modelBindingExecutionContext, ModelBindingContext bindingContext)
        {
            Cart cart = (Cart)modelBindingExecutionContext.HttpContext.Session["sessionKey"];

            if (cart == null)
            {
                cart = new Cart();
                modelBindingExecutionContext.HttpContext.Session["sessionKey"] = cart;
            }
            return(cart);
        }
		public void NavigationDataValueProviderTest()
		{
			NavigationData data = new NavigationData() { 
				{ "string", "Hello" }, {"int", 1 }
			};
			StateController.Navigate("d0", data);
			ModelBindingExecutionContext context = new ModelBindingExecutionContext(new MockHttpContext(), new ModelStateDictionary());
			NavigationDataValueProvider provider = new NavigationDataValueProvider(context, false, null);
			Assert.AreEqual("Hello", provider.GetValue("string").RawValue);
			Assert.AreEqual(1, provider.GetValue("int").RawValue);
			Assert.AreEqual("1", provider.GetValue("int").AttemptedValue);
		}
        private ComplexModel CreateAndPopulateComplexModel(ModelBindingExecutionContext modelBindingExecutionContext, ModelBindingContext bindingContext, IEnumerable<ModelMetadata> propertyMetadatas) {
            // create a Complex Model and call into the Complex Model binder
            ComplexModel originalComplexModel = new ComplexModel(bindingContext.ModelMetadata, propertyMetadatas);
            ModelBindingContext complexModelBindingContext = new ModelBindingContext(bindingContext) {
                ModelMetadata = MetadataProvider.GetMetadataForType(() => originalComplexModel, typeof(ComplexModel)),
                ModelName = bindingContext.ModelName
            };

            IModelBinder complexModelBinder = bindingContext.ModelBinderProviders.GetRequiredBinder(modelBindingExecutionContext, complexModelBindingContext);
            complexModelBinder.BindModel(modelBindingExecutionContext, complexModelBindingContext);
            return (ComplexModel)complexModelBindingContext.Model;
        }
        public bool BindModel(ModelBindingExecutionContext modelBindingExecutionContext, ModelBindingContext bindingContext) {
            ValueProviderResult vpResult = GetCompatibleValueProviderResult(bindingContext);
            if (vpResult == null) {
                return false; // conversion would have failed
            }

            bindingContext.ModelState.SetModelValue(bindingContext.ModelName, vpResult);
            object model = vpResult.RawValue;
            ModelBinderUtil.ReplaceEmptyStringWithNull(bindingContext.ModelMetadata, ref model);
            bindingContext.Model = model;

            return true;
        }
		private static string GetResourceCommon(ModelBindingExecutionContext modelBindingExecutionContext, ModelMetadata modelMetadata, object incomingValue,
			Func<ModelBindingExecutionContext, string> resourceAccessor)
		{
			string displayName = modelMetadata.GetDisplayName();
			string str = resourceAccessor(modelBindingExecutionContext);
			object[] objArray = new object[2];

			objArray[0] = incomingValue;
			objArray[1] = displayName;

			string str1 = string.Format(CultureInfo.CurrentCulture, str, objArray);
			return str1;
		}
        public override sealed IEnumerable<ModelValidator> GetValidators(ModelMetadata metadata, ModelBindingExecutionContext context) {
            if (metadata == null) {
                throw new ArgumentNullException("metadata");
            }
            if (context == null) {
                throw new ArgumentNullException("context");
            }

            if (metadata.ContainerType != null && !String.IsNullOrEmpty(metadata.PropertyName)) {
                return GetValidatorsForProperty(metadata, context);
            }

            return GetValidatorsForType(metadata, context);
        }
        private IEnumerable<ModelValidator> GetValidatorsForProperty(ModelMetadata metadata, ModelBindingExecutionContext context) {
            ICustomTypeDescriptor typeDescriptor = GetTypeDescriptor(metadata.ContainerType);
            PropertyDescriptor property = typeDescriptor.GetProperties().Find(metadata.PropertyName, true);
            if (property == null) {
                throw new ArgumentException(
                    String.Format(
                        CultureInfo.CurrentCulture,
                        SR.GetString(SR.Common_PropertyNotFound),
                        metadata.ContainerType.FullName, metadata.PropertyName),
                    "metadata");
            }

            return GetValidators(metadata, context, property.Attributes.OfType<Attribute>());
        }
        public override IModelBinder GetBinder(ModelBindingExecutionContext modelBindingExecutionContext, ModelBindingContext bindingContext) {
            ModelBinderUtil.ValidateBindingContext(bindingContext);

            string keyFieldName = ModelBinderUtil.CreatePropertyModelName(bindingContext.ModelName, "key");
            string valueFieldName = ModelBinderUtil.CreatePropertyModelName(bindingContext.ModelName, "value");

            if (bindingContext.UnvalidatedValueProvider.ContainsPrefix(keyFieldName) && bindingContext.UnvalidatedValueProvider.ContainsPrefix(valueFieldName)) {
                return ModelBinderUtil.GetPossibleBinderInstance(bindingContext.ModelType, typeof(KeyValuePair<,>) /* supported model type */, typeof(KeyValuePairModelBinder<,>) /* binder type */);
            }
            else {
                // 'key' or 'value' missing
                return null;
            }
        }
        public override IModelBinder GetBinder(ModelBindingExecutionContext modelBindingExecutionContext, ModelBindingContext bindingContext) {
            ModelBinderUtil.ValidateBindingContext(bindingContext);

            ValueProviderResult vpResult = bindingContext.UnvalidatedValueProvider.GetValue(bindingContext.ModelName, skipValidation: !bindingContext.ValidateRequest);
            if (vpResult == null) {
                return null; // no value to convert
            }

            if (!TypeDescriptor.GetConverter(bindingContext.ModelType).CanConvertFrom(typeof(string))) {
                return null; // this type cannot be converted
            }

            return new TypeConverterModelBinder();
        }
		public void CustomPropertyControlDataValueProviderTest()
		{
			StateController.Navigate("d0");
			StateContext.Data["double"] = 5d;
			ModelBindingExecutionContext context = new ModelBindingExecutionContext(new MockHttpContext(), new ModelStateDictionary());
			Page page = new Page();
			TextBox textBox = new TextBox();
			textBox.ID = "textBox";
			textBox.CssClass = "double";
			page.Controls.Add(textBox);
			context.PublishService<Control>(page);
			NavigationDataValueProvider provider = new NavigationDataValueProvider(context, true, "CssClass");
			Assert.AreEqual(5d, provider.GetValue("textBox").RawValue);
		}
        public virtual bool BindModel(ModelBindingExecutionContext modelBindingExecutionContext, ModelBindingContext bindingContext) {
            // Recursive method - prevent stack overflow.
            RuntimeHelpers.EnsureSufficientExecutionStack();

            ModelBinderUtil.ValidateBindingContext(bindingContext);

            EnsureModel(modelBindingExecutionContext, bindingContext);
            IEnumerable<ModelMetadata> propertyMetadatas = GetMetadataForProperties(modelBindingExecutionContext, bindingContext);
            ComplexModel complexModel = CreateAndPopulateComplexModel(modelBindingExecutionContext, bindingContext, propertyMetadatas);

            // post-processing, e.g. property setters and hooking up validation
            ProcessComplexModel(modelBindingExecutionContext, bindingContext, complexModel);
            bindingContext.ValidationNode.ValidateAllProperties = true; // complex models require full validation
            return true;
        }
        private static string GetResourceCommon(ModelBindingExecutionContext modelBindingExecutionContext, ModelMetadata modelMetadata, object incomingValue,
                                                Func <ModelBindingExecutionContext, string> resourceAccessor)
        {
            string displayName = modelMetadata.GetDisplayName();
            string str         = resourceAccessor(modelBindingExecutionContext);

            object[] objArray = new object[2];

            objArray[0] = incomingValue;
            objArray[1] = displayName;

            string str1 = string.Format(CultureInfo.CurrentCulture, str, objArray);

            return(str1);
        }
		public void DefaultPropertyControlDataValueProviderTest()
		{
			StateController.Navigate("d0");
			StateController.Navigate("t0");
			StateContext.Data["i"] = 1;
			ModelBindingExecutionContext context = new ModelBindingExecutionContext(new MockHttpContext(), new ModelStateDictionary());
			Page page = new Page();
			TextBox textBox = new TextBox();
			textBox.ID = "textBox";
			textBox.Text = "i";
			page.Controls.Add(textBox);
			context.PublishService<Control>(page);
			NavigationDataValueProvider provider = new NavigationDataValueProvider(context, true, null);
			Assert.AreEqual(1, provider.GetValue("textBox").RawValue);
		}
        public override IModelBinder GetBinder(ModelBindingExecutionContext modelBindingExecutionContext, ModelBindingContext bindingContext) {
            ModelBinderUtil.ValidateBindingContext(bindingContext);

            if (!bindingContext.UnvalidatedValueProvider.ContainsPrefix(bindingContext.ModelName)) {
                // no values to bind
                return null;
            }

            if (bindingContext.ModelType == typeof(ComplexModel)) {
                // forbidden type - will cause a stack overflow if we try binding this type
                return null;
            }

            return new MutableObjectModelBinder();
        }
Exemple #41
0
        public bool BindModel(ModelBindingExecutionContext modelBindingExecutionContext, ModelBindingContext bindingContext)
        {
            ValueProviderResult vpResult = GetCompatibleValueProviderResult(bindingContext);

            if (vpResult == null)
            {
                return(false); // conversion would have failed
            }

            bindingContext.ModelState.SetModelValue(bindingContext.ModelName, vpResult);
            object model = vpResult.RawValue;

            ModelBinderUtil.ReplaceEmptyStringWithNull(bindingContext.ModelMetadata, ref model);
            bindingContext.Model = model;

            return(true);
        }
        public bool BindModel(ModelBindingExecutionContext modelBindingExecutionContext, ModelBindingContext bindingContext)
        {
            //var valueProvider = bindingContext.ValueProvider;
            //int x = (int)valueProvider.GetValue("X").ConvertTo(typeof(int));
            //int y = (int)valueProvider.GetValue("Y").ConvertTo(typeof(int));
            //if (!bindingContext.FallbackToEmptyPrefix)
            //    return false;
            //bindingContext = new ModelBindingContext
            //{
            //    ModelMetadata = bindingContext.ModelMetadata,
            //    ModelState = bindingContext.ModelState,


            //    ValueProvider = bindingContext.ValueProvider
            //};
            return(true);
        }
Exemple #43
0
        /// <summary>
        /// Revalidates the model passed as the first parameter.
        /// </summary>
        /// <param name="model">The model instance you wish to validate.</param>
        /// <returns></returns>
        protected internal bool TryValidateModel(object model)
        {
            if (model == null)
            {
                throw new ArgumentNullException("model");
            }

            System.Web.ModelBinding.ModelMetadata metadata = ModelMetadataProviders.Current.GetMetadataForType(() => model, model.GetType());
            var t = new ModelBindingExecutionContext(new HttpContextWrapper(HttpContext.Current), new System.Web.ModelBinding.ModelStateDictionary());

            foreach (ModelValidationResult validationResult in ModelValidator.GetModelValidator(metadata, t).Validate(null))
            {
                ModelState.AddModelError(validationResult.MemberName, validationResult.Message);
            }

            return ModelState.IsValid;
        }
        public ModelBinderWrapper(object model = null)
        {
            modelBinder = new DefaultModelBinder();
            modelState = new ModelStateDictionary();

            var contextBase = new HttpContextWrapper(HttpContext.Current);
            executingContext = new ModelBindingExecutionContext(contextBase, modelState);

            bindingContext = new ModelBindingContext();
            bindingContext.ValueProvider = new FormValueProvider(executingContext);

            if (model != null)
            {
                setModel(model);
                BindModel();
            }
        }
        public bool BindModel(ModelBindingExecutionContext modelBindingExecutionContext, ModelBindingContext bindingContext)
        {
            //var valueProvider = bindingContext.ValueProvider;
            //int x = (int)valueProvider.GetValue("X").ConvertTo(typeof(int));
            //int y = (int)valueProvider.GetValue("Y").ConvertTo(typeof(int));
            //if (!bindingContext.FallbackToEmptyPrefix)
            //    return false;
            //bindingContext = new ModelBindingContext
            //{
            //    ModelMetadata = bindingContext.ModelMetadata,
            //    ModelState = bindingContext.ModelState,
              

            //    ValueProvider = bindingContext.ValueProvider
            //};
            return true;
        }
        public override IModelBinder GetBinder(ModelBindingExecutionContext modelBindingExecutionContext, ModelBindingContext bindingContext)
        {
            ModelBinderUtil.ValidateBindingContext(bindingContext);

            if (!bindingContext.UnvalidatedValueProvider.ContainsPrefix(bindingContext.ModelName))
            {
                // no values to bind
                return(null);
            }

            if (bindingContext.ModelType == typeof(ComplexModel))
            {
                // forbidden type - will cause a stack overflow if we try binding this type
                return(null);
            }

            return(new MutableObjectModelBinder());
        }
        public ModelBinderWrapper(object model = null)
        {
            modelBinder = new DefaultModelBinder();
            modelState  = new ModelStateDictionary();

            var contextBase = new HttpContextWrapper(HttpContext.Current);

            executingContext = new ModelBindingExecutionContext(contextBase, modelState);

            bindingContext = new ModelBindingContext();
            bindingContext.ValueProvider = new FormValueProvider(executingContext);

            if (model != null)
            {
                setModel(model);
                BindModel();
            }
        }
        public bool BindModel(ModelBindingExecutionContext modelBindingExecutionContext, ModelBindingContext bindingContext)
        {
            Cart cart = null;

            if (modelBindingExecutionContext.HttpContext.Session != null)
            {
                cart = modelBindingExecutionContext.HttpContext.Session[sessionKey] as Cart;
            }
            if (cart == null)
            {
                cart = new Cart();
                if (modelBindingExecutionContext.HttpContext.Session != null)
                {
                    modelBindingExecutionContext.HttpContext.Session[sessionKey] = cart;
                }
            }
            return(true);
        }
        public bool BindModel(ModelBindingExecutionContext modelBindingExecutionContext, ModelBindingContext bindingContext)
        {
            var request = new AspNetRequest(modelBindingExecutionContext.HttpContext.Request);

            var binder = BinderCollection.FindBinderFor(bindingContext.ModelName, bindingContext.ModelType, request, null);

            if (binder == null)
                return false;

            var bindingResult = binder.Bind(bindingContext.ModelName, bindingContext.ModelType, request, false, null);

            if(!bindingResult.BoundSuccessfully)
            {
                foreach (var error in bindingResult.BindingErrors)
                    modelBindingExecutionContext.ModelState.AddModelError(error.Key, error.Message);
            }

            return bindingResult.BoundSuccessfully;
        }
Exemple #50
0
        protected internal bool TryValidateModel(object model, string prefix, out string _modelError)
        {
            if (model == null)
            {
                throw new ArgumentNullException("model");
            }

            ModelMetadata metadata = ModelMetadataProviders.Current.GetMetadataForType(() => model, model.GetType());                                                   //using System.Web.ModelBinding;
            var           t        = new ModelBindingExecutionContext(new HttpContextWrapper(HttpContext.Current), new System.Web.ModelBinding.ModelStateDictionary()); //using System.Web;

            foreach (ModelValidationResult validationResult in ModelValidator.GetModelValidator(metadata, t).Validate(null))
            {
                ModelState.AddModelError(validationResult.MemberName, validationResult.Message);
            }

            _modelError = string.Join(" | ", ModelState.Values
                                      .SelectMany(v => v.Errors)
                                      .Select(e => e.ErrorMessage));
            return(ModelState.IsValid);
        }
Exemple #51
0
        public bool BindModel(ModelBindingExecutionContext modelBindingExecutionContext, ModelBindingContext bindingContext)
        {
            ValueProviderResult result = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);

            if (null == result)
            {
                return(false);
            }
            try
            {
                bindingContext.Model = result.ConvertTo(bindingContext.ModelType);
                if (bindingContext.Model is string && string.IsNullOrWhiteSpace((string)bindingContext.Model) && bindingContext.ModelMetadata.ConvertEmptyStringToNull)
                {
                    bindingContext.Model = null;
                }
                return(true);
            }
            catch
            {
                return(false);
            }
        }
Exemple #52
0
        public static bool TryBindStrongModel <TModel>(ModelBindingExecutionContext modelBindingExecutionContext, ModelBindingContext parentBindingContext, string propertyName, ModelMetadataProvider metadataProvider, out TModel model)
        {
            ModelBindingContext propertyBindingContext = new ModelBindingContext(parentBindingContext)
            {
                ModelMetadata = metadataProvider.GetMetadataForType(null, typeof(TModel)),
                ModelName     = ModelBinderUtil.CreatePropertyModelName(parentBindingContext.ModelName, propertyName)
            };

            IModelBinder binder = parentBindingContext.ModelBinderProviders.GetBinder(modelBindingExecutionContext, propertyBindingContext);

            if (binder != null)
            {
                if (binder.BindModel(modelBindingExecutionContext, propertyBindingContext))
                {
                    object untypedModel = propertyBindingContext.Model;
                    model = ModelBinderUtil.CastOrDefault <TModel>(untypedModel);
                    parentBindingContext.ValidationNode.ChildNodes.Add(propertyBindingContext.ValidationNode);
                    return(true);
                }
            }

            model = default(TModel);
            return(false);
        }
 private static string GetUserResourceString(ModelBindingExecutionContext modelBindingExecutionContext, string resourceName)
 {
     return(GetUserResourceString(modelBindingExecutionContext, resourceName, _resourceClassKey));
 }
 private static string DefaultValueRequiredErrorMessageProvider(ModelBindingExecutionContext modelBindingExecutionContext, ModelMetadata modelMetadata, object incomingValue)
 {
     return(GetResourceCommon(modelBindingExecutionContext, modelMetadata, incomingValue, new Func <ModelBindingExecutionContext, string>(GetValueRequiredResource)));
 }
 public abstract IModelBinder GetBinder(ModelBindingExecutionContext modelBindingExecutionContext, ModelBindingContext bindingContext);
 public CustomFormsValueProvider(ModelBindingExecutionContext context)
 {
     _form = context.HttpContext.Request.Form;
 }
 public CustomValueProvider(ModelBindingExecutionContext context) : base(context)
 {
 }
Exemple #58
0
 public bool BindModel(ModelBindingExecutionContext modelBindingExecutionContext, ModelBindingContext bindingContext)
 {
     throw new NotImplementedException();
 }
Exemple #59
0
 public IValueProvider GetValueProvider(ModelBindingExecutionContext modelBindingExecutionContext)
 {
     return(new CurrentUserValueProvider(modelBindingExecutionContext.HttpContext));
 }
 public bool BindModel(ModelBindingExecutionContext modelBindingExecutionContext, ModelBindingContext bindingContext)
 {
     return(true);
 }