Example #1
0
        public T Bind <T>(IHttpRequest request, string name)
        {
            var provider = new RequestValueProvider(request);

            if (!string.IsNullOrEmpty(name))
            {
                var context = new ModelBinderContext(typeof(T), name, "", provider);
                context.RootBinder = this;
                foreach (var modelBinder in _binders)
                {
                    if (modelBinder.CanBind(context))
                    {
                        return((T)modelBinder.Bind(context));
                    }
                }

                return(default(T));
            }
            if (typeof(IEnumerable).IsAssignableFrom(typeof(T)))
            {
                throw new InvalidOperationException("did not expect IEnumerable implementations without a name in the binder.");
            }

            var model = Activator.CreateInstance(typeof(T));

            foreach (var property in model.GetType().GetProperties())
            {
                var context = new ModelBinderContext(property.PropertyType, property.Name, "", provider);
                context.RootBinder = this;
                foreach (var modelBinder in _binders)
                {
                    if (modelBinder.CanBind(context))
                    {
                        var value = modelBinder.Bind(context);
                        property.SetValue(model, value, null);
                        break;
                    }
                }
            }
            return((T)model);
        }
 public void Initialize()
 {
     _httpRequestMock      = new Mock <HttpRequest>();
     _requestValueProvider = new RequestValueProvider(
         typeof(TestRequestDto), _httpRequestMock.Object, CancellationToken.None);
 }