Ceci est ma fonction jquery. Je voudrais poster cet objet sur le contrôleur. Tout fonctionne bien sauf le ListOfCBToDisplay, qui est une liste.Comment soumettre un objet JSON qui contient également un tableau?
<script>
function Submit_Movie() {
//
var title = $('[id*="Title"]').val();
var yearOfMaking = $('[id*="YearOfMaking"]').val();
var description = $('[id*="Description"]').val();
var movie =
{
"Title": title,
"YearOfMaking": yearOfMaking,
"Description": description,
"ListOfCBToDisplay" : []
};
//
var $cbx = $('[id*="cbx"]');
$cbx.each(function() {
var id = GetID($(this).attr('id'));
var ck = $(this).prop("checked");
alert(id + ", " + ck); //The alert is displaying correctly all the values
var new_obj = { "ID": id, "Value": ck, "Text": "" };
movie.ListOfCBToDisplay.push(new_obj);
})
//
var url = "@Url.Action("AddEditMovie", "Admin")";
$.post(url, movie, function (data) {
location.reload();
});
}
function GetID(elt_id) {
var _id = elt_id.split('_');
if (_id.length == 2) {
return _id[1];
}
else {
return 0;
}
}
C'est la classe Movie
public class Movie
{
public Movie()
{
ListOfCBToDisplay = new List<CheckBoxToDisplay>();
}
// more properties ...
public List<CheckBoxToDisplay> ListOfCBToDisplay { get; set; }
}
Et ceci est l'action
[HttpPost]
public ActionResult AddEditMovie(Movie movie)
{
//More here ...
}
Toute raison pour laquelle toutes les propriétés primitives obtiennent leurs valeurs alors que les objets la liste a des valeurs nulles, c'est-à-dire ID = 0, Text = null et Value = false? Cependant, le nombre d'objets est toujours correct, seules les valeurs sont nulles.
Merci de nous aider
0, NULL et false sont tous 0 en interne. Êtes-vous sûr qu'ils sont en train de se mettre en place? –
Je ne sais pas. Toutes les propriétés des primitives, telles que Title, Description, sont définies correctement. Seules les valeurs du tableau ne sont pas définies. Regardez le code. J'ai mis une alerte là-bas et j'obtiens les bonnes valeurs. – Richard77