[英]How to submit Json object that also contains an array?
这是我的jQuery函数。 我想将此对象发布到控制器。 除了ListOfCBToDisplay这是一个列表之外, 其他所有东西都可以正常工作。
<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;
}
}
这是电影课
public class Movie
{
public Movie()
{
ListOfCBToDisplay = new List<CheckBoxToDisplay>();
}
// more properties ...
public List<CheckBoxToDisplay> ListOfCBToDisplay { get; set; }
}
这就是行动
[HttpPost]
public ActionResult AddEditMovie(Movie movie)
{
//More here ...
}
任何原因为什么列表中的对象都具有空值(例如ID = 0,Text = null和Value = false)时所有原始属性都获得其值? 但是,对象数始终正确,只有值是空。
感谢您的帮助
您可以尝试将JSON JSON.stringify(myObject);
物体。 或者,您可以简单地使用JS join
方法序列化字符串:
var myList = [];
$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+"~"+ck; // here `~` is id/value separator
myList.push(new_obj);
})
movie.ListOfCBToDisplay = myList.join("^"); // here '^' is a separator
然后在您的服务器端,使用^
分隔符拆分字符串以获取ID /值列表,然后使用~
拆分每个字符串。 这基本上是手动序列化对象。
编辑
另一种方法是将所有需要的值作为<input type='hidden'>
复制到隐藏的<form>
然后在表单上使用JQuery serialize() 。 也许您可以使用当前表格来这样做。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.