public void OnActionExecuting(ActionExecutingContext filterContext)
{
if (filterContext.ActionParameters.ContainsKey(ActionParameterName))
{
GridCommand command = new GridCommand
{
Page = filterContext.Controller.ValueOf<int>(Prefix(GridUrlParameters.CurrentPage)),
PageSize = filterContext.Controller.ValueOf<int>(Prefix(GridUrlParameters.PageSize))
};
string orderBy = filterContext.Controller.ValueOf<string>(Prefix(GridUrlParameters.OrderBy));
command.SortDescriptors.AddRange(GridDescriptorSerializer.Deserialize<SortDescriptor>(orderBy));
string filter = filterContext.Controller.ValueOf<string>(Prefix(GridUrlParameters.Filter));
command.FilterDescriptors.AddRange(FilterDescriptorFactory.Create(filter));
string groupBy = filterContext.Controller.ValueOf<string>(Prefix(GridUrlParameters.GroupBy));
command.GroupDescriptors.AddRange(GridDescriptorSerializer.Deserialize<GroupDescriptor>(groupBy));
filterContext.ActionParameters[ActionParameterName] = command;
}
}