I have the following problem:
On a Button-Click I POST some data to the server.
My controller Action looks like this:
public ActionResult Accept(List<MyViewModel> entries)
{
//here entries HAS 2 MyViewModel-Instances in it.
//The entries are not null, but the values of the instances are!
//entries[0].ParamA is null
}
Where the MyViewModel looks like this:
public class MyViewModel
{
public string ParamA { get; set; }
public string ParamB { get; set; }
}
And the AJAX-Call is the follwing:
var myEntries = { entries: [{ ParamA: "A", ParamB: "B" }, { ParamA: "C", ParamB: "D" }] };
$.ajax({
type: 'POST',
url: url,
cache: false,
data: myEntries,
dataType: 'text' });
What i already tried to do:
- Changed dataType to 'json'
- used: traditional: true
- tried var myEntries = JSON.stringify(…);
- tried var myEntries = { entries : [JSON.stringify({ … }), JSON.stringify({ … })] };
- same as above, but with jQuery.param(…, true);
- Use of IEnumerable or MyViewModel[] instead of list.
- ANY combination of the above
What am I doing wrong here?
Thank you very, very much in advance for helping me!
EDIT
My (Razor)View is not interesting at this moment as it has nothing to do with anything. I am NOT using any of the HTML.TextBoxFor (or similiar) Methods to fill the myEntries-Variable. It is actually filled dynamically (because there are many many conditions).
For the sake of the question (and my own testing) i hard-coded the variable. 🙂
Best Answer
With your answer and the use of
JSON.stringify
method it works for me