Beispiel #1
0
        public ConfigurationBinderImpl(ValueProvider provider)
        {
            _provider = provider;
            _binder   = new FastModelBinder();

            _context = new ConfigurationBinderContext(provider);
        }
Beispiel #2
0
        public void Bind_ViewModelArray_Gap()
        {
            var provider = new ValueProvider
            {
                Parameters =
                {
                    new Parameter("user[1].FirstName", "jonas"),
                    new Parameter("user[3].FirstName", "Arne"),
                    new Parameter("user[0].Age",       "32"),
                    new Parameter("user[1].Age",       "23")
                }
            };
            var mapper = new ModelMapper();

            mapper.Clear();
            mapper.AddBinder(new PrimitiveModelBinder());
            mapper.AddBinder(new ClassBinder());
            var context = new ModelBinderContext(typeof(UserViewModel[]), "user", "", provider)
            {
                RootBinder = mapper
            };

            var binder = new ArrayModelBinder();

            Assert.Throws <ModelBindingException>(() => binder.Bind(context));
        }
Beispiel #3
0
        public InstanceBinderContext(ModelBinderContext context)
        {
            _contextStack = new Stack <ModelBinderContext>();
            _contextStack.Push(context);

            _propertyStack = new Stack <ObjectPropertyBinder>();
        }
Beispiel #4
0
        public InstanceBinderContext(ModelBinderContext context)
        {
            _contextStack = new Stack<ModelBinderContext>();
            _contextStack.Push(context);

            _propertyStack = new Stack<ObjectPropertyBinder>();
        }
Beispiel #5
0
        public void Bind_ViewModelArray_Index()
        {
            var provider = new ValueProvider
            {
                Parameters =
                {
                    new Parameter("user[1].FirstName", "jonas"),
                    new Parameter("user[0].FirstName", "Arne"),
                    new Parameter("user[0].Age",       "32"),
                    new Parameter("user[1].Age",       "23")
                }
            };
            var mapper = new ModelMapper();

            mapper.Clear();
            mapper.AddBinder(new PrimitiveModelBinder());
            mapper.AddBinder(new ClassBinder());
            var context = new ModelBinderContext(typeof(UserViewModel[]), "user", "", provider)
            {
                RootBinder = mapper
            };

            var binder = new ArrayModelBinder();
            var actual = (UserViewModel[])binder.Bind(context);

            Assert.NotNull(actual);
            Assert.Equal("jonas", actual[1].FirstName);
            Assert.Equal("Arne", actual[0].FirstName);
            Assert.Equal(23, actual[1].Age);
            Assert.Equal(32, actual[0].Age);
        }
Beispiel #6
0
        public void String_Ok()
        {
            var provider = new ValueProvider()
            {
                Parameters = { new Parameter("code", "Forbidden") }
            };
            var context = new ModelBinderContext(typeof(HttpStatusCode), "code", "", provider);

            var binder = new EnumModelBinder();
            var actual = (HttpStatusCode)binder.Bind(context);

            Assert.Equal(HttpStatusCode.Forbidden, actual);
        }
Beispiel #7
0
        public void Number_Ok()
        {
            var provider = new ValueProvider()
            {
                Parameters = { new Parameter("code", "404") }
            };
            var context = new ModelBinderContext(typeof(HttpStatusCode), "code", "", provider);

            var binder = new EnumModelBinder();
            var actual = (HttpStatusCode)binder.Bind(context);

            Assert.Equal(HttpStatusCode.NotFound, actual);
        }
Beispiel #8
0
        public void String()
        {
            var provider = new ValueProvider()
            {
                Parameters = { new Parameter("age", "Why do you need to know???") }
            };
            var context = new ModelBinderContext(typeof(string), "age", "", provider);

            var binder = new PrimitiveModelBinder();
            var actual = (string)binder.Bind(context);

            Assert.Equal("Why do you need to know???", actual);
        }
Beispiel #9
0
        public void Int()
        {
            var provider = new ValueProvider()
            {
                Parameters = { new Parameter("age", "3") }
            };
            var context = new ModelBinderContext(typeof(int), "age", "", provider);

            var binder = new PrimitiveModelBinder();
            var actual = (int)binder.Bind(context);

            Assert.Equal(3, actual);
        }
Beispiel #10
0
        public void Bind_IntArray_Gap()
        {
            var provider = new ValueProvider()
            {
                Parameters = { new Parameter("ages[2]", "3"), new Parameter("ages[0]", "20") }
            };
            var context = new ModelBinderContext(typeof(int[]), "ages", "", provider);

            context.RootBinder = new PrimitiveModelBinder();

            var binder = new ArrayModelBinder();

            Assert.Throws <ModelBindingException>(() => binder.Bind(context));
        }
Beispiel #11
0
        public void Double()
        {
            Thread.CurrentThread.CurrentCulture = new CultureInfo(1033);
            var provider = new ValueProvider()
            {
                Parameters = { new Parameter("age", "3.5") }
            };
            var context = new ModelBinderContext(typeof(double), "age", "", provider);

            var binder = new PrimitiveModelBinder();
            var actual = (double)binder.Bind(context);

            Assert.Equal(3.5, actual);
        }
Beispiel #12
0
        public void Bind_IntArray_NoIndex()
        {
            var provider = new ValueProvider()
            {
                Parameters = { new Parameter("ages[]", "3", "20") }
            };
            var context = new ModelBinderContext(typeof(int[]), "ages", "", provider);

            var binder = new ArrayModelBinder();
            var actual = (int[])binder.Bind(context);

            Assert.NotNull(actual);
            Assert.Equal(3, actual[0]);
            Assert.Equal(20, actual[1]);
        }
Beispiel #13
0
        public void NoPublicDefaultConstructor()
        {
            var provider = new ValueProvider
            {
                Parameters =
                {
                    new Parameter("user.FirstName", "jonas"),
                }
            };
            var mapper = new ModelMapper();

            mapper.Clear();
            mapper.AddBinder(new PrimitiveModelBinder());
            var context = new ModelBinderContext(typeof(Test), "user", "", provider)
            {
                RootBinder = mapper
            };

            var binder = new ClassBinder();

            Assert.Throws <ModelBindingException>(() => binder.Bind(context));
        }
Beispiel #14
0
        public void InvalidFieldType()
        {
            var provider = new ValueProvider
            {
                Parameters =
                {
                    new Parameter("user.FirstName", "jonas"),
                    new Parameter("user.Age",       "arne")
                }
            };
            var mapper = new ModelMapper();

            mapper.Clear();
            mapper.AddBinder(new PrimitiveModelBinder());
            var context = new ModelBinderContext(typeof(UserViewModel), "user", "", provider)
            {
                RootBinder = mapper
            };

            var binder = new ClassBinder();

            Assert.Throws <ModelBindingException>(() => binder.Bind(context));
        }
Beispiel #15
0
        public void UnknownField()
        {
            var provider = new ValueProvider
            {
                Parameters =
                {
                    new Parameter("user.FirstName",       "jonas"),
                    new Parameter("user.NotInventedHere", "23")
                }
            };
            var mapper = new ModelMapper();

            mapper.Clear();
            mapper.AddBinder(new PrimitiveModelBinder());
            var context = new ModelBinderContext(typeof(UserViewModel), "user", "", provider)
            {
                RootBinder = mapper
            };

            var binder = new ClassBinder();
            var actual = (UserViewModel)binder.Bind(context);

            Assert.Equal("jonas", actual.FirstName);
        }
Beispiel #16
0
 public T Bind <T>(ModelBinderContext context)
 {
     return((T)Bind(typeof(T), context));
 }
Beispiel #17
0
 public object Bind(Type type, ModelBinderContext context)
 {
     return(new InstanceBinderContext(context).Bind(type));
 }