这是我的剧本:
$.fn.serializeObject = function () {
var o = {};
var a = this.serializeArray();
$.each(a, function () {
if (o[this.name] !== undefined) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
};
function btnadHocSave() {
debugger
var lv_header = $("#Header").serializeObject(); // this is header <fieldset> tag
var lv_detail = $("#SubmitMachine").serializeObject(); // this is detail <fieldset> tag
$.ajax({
type: "POST",
url: '@Url.Action("UpdateMachine")',
contentType: "application/json",
dataType: "JSON",
data: {
myheader: lv_header,
mydetail: lv_detail
},
cache: false,
success: function (data) {
alert("Success!..");
},
error: function (xhr, ajaxOptions, thrownError) {
alert(thrownError);
}
})
}
这是我的行动代码。 PMAllotmentEntry
和PMAllotmentDetailEntry
是模型:
public ActionResult UpdateMachine(PMAllotmentEntry myheader, PMAllotmentDetailEntry mydetail)
{
return View();
}
现在我的问题我无法从视图到控制器获取值。
我也试过JSON.stringify
,但没有用。
如果我传递单个JSON值,它正在工作。
我尝试了所有可能性。如你所说也没有用。最后我做了以下几点。我有两个JSON值,但仍面临问题,因为JSON第二个值第一个字段值带有第一个JSON值。
function btnadHocSave() {
debugger
var lv_header = $("#Header").serialize(); // this is header <fieldset>
var lv_detail = $("#SubmitMachine").serialize();
$.ajax(
{
type: "GET",
url: '/PMAllotments/UpdateMachine',
contentType: "application/json",
dataType: "JSON",
data: lv_header + ',' + lv_detail,
success: function (data) {
alert("Success!..");
debugger
$("#adHocAdd40").modal("hide");
},
error: function (xhr, ajaxOptions, thrownError) {
alert(thrownError);
}
})
}
答案 0 :(得分:0)
现在我从cshtml文件中删除了JQuery,只使用了post方法
[HttpPost]
public ActionResult UpdateMachine(PMAllotmentEntry m)
{
//complete the task
return View();
}
用for循环替换.cshtml文件中的foreach循环
FOR循环非常重要,foreach循环永远不会返回您的子模型数据。
@for (int a = 0; a < Model.PMAllotmentDetail.Count; a++)
{
@* table rows here *@
}
我的模型如下
[NotMapped]
public class PMAllotmentEntry
{
[Key]
public Int64 PMAllotmentId { get; set; }
[Required (ErrorMessage ="Add atleast one machine!")]
public List<PMAllotmentDetailEntry> PMAllotmentDetail { get; set; }
}
[NotMapped]
public class PMAllotmentDetailEntry
{
[Key]
public Int64 PMAllotmentDetailId { get; set; }
[ForeignKey("PMAllotmentId")]
public Int64 PMAllotmentId { get; set; }
}