public ActionResult FixValueProviderPost()
        {
            //Value provider csak az URL paraméterrel dolgozik
            var querystringValues = new QueryStringValueProvider(this.ControllerContext);
            var routeValues       = new RouteDataValueProvider(this.ControllerContext);

            ValueProviderResult action     = querystringValues.GetValue("action");      //action=null
            ValueProviderResult controller = querystringValues.GetValue("controller");  //controller=null

            ValueProviderResult idResult = querystringValues.GetValue("Id");            //idResult=null

            int    id         = (int)routeValues.GetValue("Id").ConvertTo(typeof(int)); //idResult=99999
            string EzNemValid = querystringValues.GetValue(key: "WillNeverValid").AttemptedValue;

            var model = CategoryModel.GetCategory(1);

            //A model.WillNeverValid értéke "Hát ez honnan jött?" lesz:
            this.TryUpdateModel <CategoryModel>(model, string.Empty, querystringValues);

            //Input mezők
            var  formValues = new FormValueProvider(this.ControllerContext);
            bool szerepel   = formValues.ContainsPrefix("prefix.WillNeverValid");

            this.TryUpdateModel <CategoryModel>(model, "prefix", formValues);

            return(RedirectToAction("FixValueProvider"));
        }
        private HiveEntityUri ExecuteBinding(IValueProvider form, RouteData routeData, out ModelBindingContext bindingContext, out ControllerContext controllerContext)
        {
            var modelBinder        = new HiveEntityUriModelBinder();
            var httpContextFactory = new FakeHttpContextFactory("~/Umbraco/Editors/ContentEditor/Edit/1", routeData);



            var fakeFrameworkContext = new FakeFrameworkContext();
            var hive                      = FakeHiveCmsManager.New(fakeFrameworkContext);
            var resolverContext           = new MockedMapResolverContext(hive, new MockedPropertyEditorFactory(), new MockedParameterEditorFactory());
            var webmModelMapper           = new CmsModelMapper(resolverContext);
            var cmsPersistenceModelMapper = new CmsPersistenceModelMapper(resolverContext);
            var cmsModelMapper            = new CmsDomainMapper(resolverContext);

            fakeFrameworkContext.SetTypeMappers(new FakeTypeMapperCollection(new AbstractTypeMapper[] { webmModelMapper, cmsModelMapper, cmsPersistenceModelMapper }));
            var umbracoApplicationContext = new FakeUmbracoApplicationContext(hive);

            controllerContext = new ControllerContext(
                httpContextFactory.RequestContext,
                new ContentEditorController(new FakeBackOfficeRequestContext(umbracoApplicationContext)));

            //put both the form and route values in the value provider
            var routeDataValueProvider = new RouteDataValueProvider(controllerContext);
            var values = new ValueProviderCollection(new List <IValueProvider>()
            {
                form,
                routeDataValueProvider
            });

            bindingContext = GetBindingContext(new HiveEntityUri(1), values);

            //do the binding!

            var model = modelBinder.BindModel(controllerContext, bindingContext);

            //assert!

            Assert.IsInstanceOfType(model, typeof(HiveEntityUri), "Model isn't a HiveEntityUri");
            var boundModel = (HiveEntityUri)model;

            return(boundModel);
        }
        private HiveId ExecuteBinding(IValueProvider form, RouteData routeData, out ModelBindingContext bindingContext, out ControllerContext controllerContext)
        {
            var modelBinder        = new HiveIdModelBinder();
            var httpContextFactory = new FakeHttpContextFactory("~/Rebel/Editors/ContentEditor/Edit/1", routeData);



            var fakeFrameworkContext = new FakeFrameworkContext();
            var hive            = FakeHiveCmsManager.New(fakeFrameworkContext);
            var appContext      = new FakeRebelApplicationContext(hive);
            var resolverContext = new MockedMapResolverContext(fakeFrameworkContext, hive, new MockedPropertyEditorFactory(appContext), new MockedParameterEditorFactory());
            var webmModelMapper = new CmsModelMapper(resolverContext);

            fakeFrameworkContext.SetTypeMappers(new FakeTypeMapperCollection(new AbstractMappingEngine[] { webmModelMapper, new FrameworkModelMapper(fakeFrameworkContext) }));
            var rebelApplicationContext = new FakeRebelApplicationContext(hive);

            controllerContext = new ControllerContext(
                httpContextFactory.RequestContext,
                new ContentEditorController(new FakeBackOfficeRequestContext(rebelApplicationContext)));

            //put both the form and route values in the value provider
            var routeDataValueProvider = new RouteDataValueProvider(controllerContext);
            var values = new ValueProviderCollection(new List <IValueProvider>()
            {
                form,
                routeDataValueProvider
            });

            bindingContext = GetBindingContext(new HiveId(1), values);

            //do the binding!

            var model = modelBinder.BindModel(controllerContext, bindingContext);

            //assert!

            Assert.That(model, Is.InstanceOf <HiveId>(), "Model isn't a HiveId");
            var boundModel = (HiveId)model;

            return(boundModel);
        }
Beispiel #4
0
        private static IDictionary <string, object> ToDictionaryOut(this System.Net.Http.HttpRequestMessage message)
        {
            Dictionary <string, object> d = new Dictionary <string, object>();

            foreach (var item in message.Properties)
            {
                if (routeData.Contains(item.Key.ToLower()))
                {
                    RouteDataValueProvider provider = item.Value as RouteDataValueProvider;
                    if (provider != null)
                    {
                        foreach (var kvp in provider.GetKeysFromPrefix(""))
                        {
                            string key = kvp.Key;
                            ValueProviderResult vpr = (ValueProviderResult)provider.GetValue(key);
                            object o = vpr.RawValue;
                            if (key.Equals("controller", StringComparison.OrdinalIgnoreCase))
                            {
                                d.Add("xf-request.route-data.controller", String.Format("{0}.Controller", o.ToString()));
                            }
                            else
                            {
                                if (o.GetType().IsClass)
                                {
                                    d.Add(String.Format("xf-request.route-data.{0}", key), vpr.AttemptedValue);
                                }
                                else
                                {
                                    d.Add(String.Format("xf-request.route-data.{0}", key), o);
                                }
                            }
                        }
                    }
                }
                else if (item.Key.Equals("MS_HttpActionDescriptor"))
                {
                    ReflectedHttpActionDescriptor descriptor = item.Value as ReflectedHttpActionDescriptor;
                    if (descriptor != null && descriptor.ReturnType != null && !String.IsNullOrWhiteSpace(descriptor.ActionName))
                    {
                        d.Add("xf-request.controller-method.name", descriptor.ActionName);
                        d.Add("xf-request.controller-method.return-type", descriptor.ReturnType.Name);
                    }
                }
            }
            if (actions.Contains(message.Method.ToString().ToLower()))
            {
                var ctx = message.Properties["MS_HttpContext"] as HttpContextWrapper;
                if (ctx != null && ctx.Request.ContentLength > 0)
                {
                    using (var stream = new System.IO.MemoryStream())
                    {
                        ctx.Request.InputStream.Seek(0, System.IO.SeekOrigin.Begin);
                        ctx.Request.InputStream.CopyTo(stream);
                        string body = Encoding.UTF8.GetString(stream.ToArray());
                        d.Add("xf-request.message.body", body);
                    }
                }
            }
            var    responseCtx       = message.Properties["MS_HttpContext"] as HttpContextWrapper;
            int    status            = responseCtx.Response.StatusCode;
            string statusDescription = responseCtx.Response.StatusDescription;

            d.Add("xf-request.response.status-code", responseCtx.Response.StatusCode.ToString());
            d.Add("xf-request.response.status-description", responseCtx.Response.StatusDescription);
            return(d);
        }
        private HiveId ExecuteBinding(IValueProvider form, RouteData routeData, out ModelBindingContext bindingContext, out ControllerContext controllerContext)
        {

            var modelBinder = new HiveIdModelBinder();
            var httpContextFactory = new FakeHttpContextFactory("~/Rebel/Editors/ContentEditor/Edit/1", routeData);



            var fakeFrameworkContext = new FakeFrameworkContext();
            var hive = FakeHiveCmsManager.New(fakeFrameworkContext);
            var appContext = new FakeRebelApplicationContext(hive);
            var resolverContext = new MockedMapResolverContext(fakeFrameworkContext, hive, new MockedPropertyEditorFactory(appContext), new MockedParameterEditorFactory());
            var webmModelMapper = new CmsModelMapper(resolverContext);

            fakeFrameworkContext.SetTypeMappers(new FakeTypeMapperCollection(new AbstractMappingEngine[] { webmModelMapper, new FrameworkModelMapper(fakeFrameworkContext) }));
            var rebelApplicationContext = new FakeRebelApplicationContext(hive);

            controllerContext = new ControllerContext(
                httpContextFactory.RequestContext,
                new ContentEditorController(new FakeBackOfficeRequestContext(rebelApplicationContext)));

            //put both the form and route values in the value provider
            var routeDataValueProvider = new RouteDataValueProvider(controllerContext);
            var values = new ValueProviderCollection(new List<IValueProvider>()
                                                         {
                                                             form, 
                                                             routeDataValueProvider
                                                         });

            bindingContext = GetBindingContext(new HiveId(1), values);

            //do the binding!

            var model = modelBinder.BindModel(controllerContext, bindingContext);

            //assert!

            Assert.That(model, Is.InstanceOf<HiveId>(), "Model isn't a HiveId");
            var boundModel = (HiveId)model;
            return boundModel;
        }