Q:

how to send complex type from client side to server side

i have a page that needs to send complex data from client side into webmethod in asp.net mvc.
my data is  :
    {"tbl":[{"row":{"items":[{"name":"madrak1","val":"fdsfds"},{"name":"mahaleTahsil1","val":"fdsfds"},{"name":"reshte1","val":""},{"name":"start1","val":""},{"name":"end1","val":""}]}}]}

i need to have a class named table that put all the variables inside it.
my webmethod is :
 public ActionResult SaveDetailedInfo(List<rrow> tbl)
    {
        return Json(new { status = "Success", message = "Success" });
    }

A:

Your C# classes should look something like: 
public class Item
{

    [JsonProperty("name")]
    public string Name { get; set; }

    [JsonProperty("val")]
    public string Val { get; set; }
}

public class Row
{

    [JsonProperty("items")]
    public IList<Item> Items { get; set; }
}

public class Tbl
{

    [JsonProperty("row")]
    public Row Row { get; set; }
}

public class Table
{

    [JsonProperty("tbl")]
    public IList<Tbl> Tbl { get; set; }
}

And your MVC method:
public ActionResult SaveDetailedInfo(Table table)
{
    return Json(new { status = "Success", message = "Success" });
}

So sending data from your front end...
var table = {
    "tbl": [{
        "row": {
            "items": [{
                "name": "madrak1",
                "val": "fdsfds"
            }, {
                "name": "mahaleTahsil1",
                "val": "fdsfds"
            }, {
                "name": "reshte1",
                "val": ""
            }, {
                "name": "start1",
                "val": ""
            }, {
                "name": "end1",
                "val": ""
            }]
        }
    }]
};

var xhr = new XMLHttpRequest();
xhr.open('POST', '/Home/SaveDetailedInfo', true);
xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');

// send the collected data as JSON
xhr.send(JSON.stringify(table));

Should result in...

PS. There is an easy way to convert your json objects into C# classes

