I realize this question was asked some time ago, and that there are a plethora of ways to solve this in ASP.Net. What I've typically done is use WebMethods on aspx pages. You can also use an asmx Web Services file too - Robert does a good job explaining that here.
For something like the structure above I use generics and structs in C# to make it easier to handle the data on the server-side in a similar manor the data is handled in JavaScript. Also makes it easier to serialize the JSON. I realize there is some initial overhead to doing it this way. My goal would be to make it as easy in C# to work with the data on the server-side as it is on the front-end with JavaScript.
I Reference the following namespaces In addition to those added automatically in VS2010:
using System.Collections;
using System.Web.Services;
using System.Web.Script;
using System.Web.Script.Serialization;
using System.Web.Script.Services;
I then define the following structs:
public struct RouteAddedResponse {
public int? id;
public int status;
public string message;
}
public struct BoardingZoneDetail
{
public string name;
public string time;
public string quota;
}
public struct DestinationZoneDetail
{
public string name;
}
public struct RouteSerial
{
public string name;
public string rsn;
public Dictionary<string, List<BoardingZoneDetail>> boardingzone;
public Dictionary<string, List<DestinationZoneDetail>> destination;
}
Below is an example of the ScriptMethod
// WebMethod expects: Dictionary<string, List<Dictionary<string, RoutSerial>>>;
// Change UseHttpGet to false to send data via HTTP GET.
[System.Web.Services.WebMethod()]
[System.Web.Script.Services.ScriptMethod(ResponseFormat = System.Web.Script.Services.ResponseFormat.Json, UseHttpGet = false)]
public static RouteAddedResponse AddRouteData(List<Dictionary<string, RouteSerial>> route)
{
// Iterate through the list...
foreach (Dictionary<string, RouteSerial> drs in route) {
foreach (KeyValuePair<string,RouteSerial> rs in drs)
{
// Process the routes & data here..
// Route Key:
// rs.Key;
// Route Data/Value:
// rs.Value;
// ...
}
}
return new RouteAddedResponse() { id = -1, status = 0, message = "your message here" };
}
The script method, AddRouteData
, is expecting the structure outlined above via HTTP POST. If you would be using sing a GET request the method arguments would be query string variables.
Caveats
In using ScriptMethods with ASP.Net, you need to be sure that the Content-Type
header is set to: application/json; charset=utf-8
whether you are using a GET or POST request.
Hope that helps!