How can I post an array of string to ASP.NET MVC Controller without a form? How can I post an array of string to ASP.NET MVC Controller without a form? json json

How can I post an array of string to ASP.NET MVC Controller without a form?


I modified my response to include the code for a test app I did.

Update: I have updated the jQuery to set the 'traditional' setting to true so this will work again (per @DustinDavis' answer).

First the javascript:

function test(){    var stringArray = new Array();    stringArray[0] = "item1";    stringArray[1] = "item2";    stringArray[2] = "item3";    var postData = { values: stringArray };    $.ajax({        type: "POST",        url: "/Home/SaveList",        data: postData,        success: function(data){            alert(data.Result);        },        dataType: "json",        traditional: true    });}

And here's the code in my controller class:

public JsonResult SaveList(List<String> values){    return Json(new { Result = String.Format("Fist item in list: '{0}'", values[0]) });}

When I call that javascript function, I get an alert saying "First item in list: 'item1'". Hope this helps!


FYI: JQuery changed the way they serialize post data.

http://forum.jquery.com/topic/nested-param-serialization

You have to set the 'Traditional' setting to true, other wise

{ Values : ["1", "2", "3"] }

will come out as

Values[]=1&Values[]=2&Values[]=3

instead of

Values=1&Values=2&Values=3


Thanks everyone for the answers. Another quick solution will be to use jQuery.param method with traditional parameter set to true to convert JSON object to string:

$.post("/your/url", $.param(yourJsonObject,true));