public override IDictionary <string, object> Serialize(IGridUrlBuilder urlBuilder)
        {
            var state = base.Serialize(urlBuilder);

            if (Text.HasValue())
            {
                state["text"] = Text;
            }

            if (SendState && !Ajax)
            {
                RouteValues.AddRange(urlBuilder.GetState());
            }

            var dataRouteValues = DataRouteValues.Cast <IGridDataKey>();

            if (Ajax)
            {
                state["ajax"] = true;
            }

            if (SendDataKeys)
            {
                dataRouteValues = dataRouteValues.Concat(urlBuilder.GetDataKeys());
            }

            foreach (var route in dataRouteValues)
            {
                RouteValues[route.RouteKey] = "<#=" + route.Name + "#>";
            }

            state["url"] = urlBuilder.Url(this);

            return(state);
        }
        private RouteValues Read(Type controllerType, MethodCallExpression methodCall)
        {
            var values = new RouteValues();

            values.Controller = ControllerName(controllerType);
            values.Action     = ActionName(methodCall);
            values.Area       = AreaName(controllerType);

            values.AddRange(ReadParameters(methodCall));

            return(values);
        }
Example #3
0
        public RouteValues ReadRequestProperties(string url, HttpMethod httpMethod, BodyFormat bodyFormat)
        {
            if (!CheckValid(url, httpMethod))
            {
                return(new RouteValues());
            }

            var actualProps = new RouteValues();

            actualProps.Controller = ControllerName();
            actualProps.Action     = ActionName();

            actualProps.AddRange(GetRouteParams());

            var queryParams = UrlHelpers.ReadQueryParams(url);

            actualProps.AddRange(queryParams);
            actualProps.AddRange(ReadPropertiesFromBodyContent(bodyFormat));

            actualProps.Sort();

            return(actualProps);
        }