New to Telerik UI for ASP.NET MVC? Download free 30-day trial

Serialize DataSource Request of Grid and Post It to Another Backend Service

Environment

Product Telerik UI for ASP.NET MVC Grid
Product Version 2019.3.917
ASP.NET Core Version 3.0

Description

I've started using SpreadStreamProcessing and I'm now trying to get it to work with my existing code. I would like to pass the DataSourceRequest to another method and use it to generate an excel file. How can I post the existing request?

Solution

  1. For get requests, you can use an approach similar to the one demonstrated in this forum post.
  2. For the standard POST request, you need to serialize the Form request in the same way as the grid request does it.
    public ActionResult ReadOrders([DataSourceRequest]DataSourceRequest request)
    {
        var req = JsonConvert.SerializeObject(HttpContext.Request.Form);

        ProcessRequest(req);

        return Json(orders.ToDataSourceResult(request));
    }

    private async void ProcessRequest(string request)
    {
        HttpClient httpClient = new HttpClient();
        var formItems  = new List<KeyValuePair<string,string>>();
        httpClient.DefaultRequestHeaders.Add("X-Requested-With", "XMLHttpRequest");
        var values = JsonConvert.DeserializeObject<List<KeyValuePair<string,List<string>>>>(request);
        foreach (var keyValuePair in values)
        {
            formItems.Add(new KeyValuePair<string,string>(keyValuePair.Key), keyValuePair.Value[0]));
        }
        var form = new FormUrlEncodedContent(formItems);
        var response = httpClient.PostAsync("https://SomeOtherDomain.com/SomeController/ReadOrders", form).Result;
        string resWithFilter = await response.Content.ReadAsStringAsync();
        List<OrderViewModel> savedResult = JsonConvert.DeserializeObject<ResultData>(resWithFilter).Data;
    }

More ASP.NET MVC Grid Resources

See Also

In this article