Jquery 如何将Json数组绑定到IList<;t>;当它设置在复杂类型的深处时?
我想将Json“ItemList”(这是一个列表)绑定到位于AddQuoteRequestVM模型深处的Ilist ItemList。层次结构为AddquoteRequestVM->ParcelVM->Ilist 控制器Jquery 如何将Json数组绑定到IList<;t>;当它设置在复杂类型的深处时?,jquery,json,asp.net-mvc-4,Jquery,Json,Asp.net Mvc 4,我想将Json“ItemList”(这是一个列表)绑定到位于AddQuoteRequestVM模型深处的Ilist ItemList。层次结构为AddquoteRequestVM->ParcelVM->Ilist 控制器 public QuoteController() { [HttpPost] public ActionResult Add(AddQuoteRequestVM model) { } } 视图模型 public class AddQuote
public QuoteController()
{
[HttpPost]
public ActionResult Add(AddQuoteRequestVM model)
{
}
}
视图模型
public class AddQuoteRequestVM
{
public int QuoteId { get; set; }
public DestinationVM PickUpAddress { get; set; }
public ParcelVM ItemDescription { get; set; }
}
ParcelVM
public class ParcelVM
{
[Required]
public IList<Item> ItemList { get; set; }
}
Item
public class Item
{
[RegularExpression(@"^[0-9]+$")]
public int? Width { get; set; }
[RegularExpression(@"^\d+$")]
public int? Height { get; set; }
[RegularExpression(@"^\d+$")]
public int? Length { get; set; }
[RegularExpression(@"^\d*\.?\d{1,2}$")]
[VolumneExist("Volume")]
public decimal? Weight { get; set; }
[Required]
[RegularExpression(@"^[0-9]+$")]
public int? Quantity { get; set; }
[RegularExpression(@"^\d*\.?\d{1,3}$")]
public decimal? Volume { get; set; }
[Required]
[StringLength(60)]
public string FreeText { get; set; }
public byte SelectedPackageType { get; set; }
}
我想在一个调用中同时传递表单数据和Javascript ItemList数组。此时ItemList返回null。如果我重构代码只发送表单数据,我不会有任何问题。就在我尝试发送表单数据和json数组时
任何想法和解释
谢谢应该是
var data={'itemsdescription.ItemList':ItemList}代码>?我刚刚尝试了您的建议,但IList ItemList仍返回空值。是否检查了请求表单集合键。您应该获得类似于itemsdescription.ItemList[0].someProperty
,itemsdescription.ItemList[1].someProperty
的内容,其中someProperty
是Item
类的属性(您没有发布Item
,因此不确定属性名称)否。没有显示ItemDescriptionvar itemList=ko.toJSON(viewModel.itemList())的任何内容;返回json数组。
var form = $("#createQuoteForm").serialize();
var itemList = ko.toJSON(viewModel.ItemList());
var data = { 'ItemDescription.ItemList' : itemList };
$.ajax({
url: "Add",
type: "POST",
data: JSON.stringify(form, data);
});
});