2017-12-05 11 views
-1

을이되어 사용 컨트롤러로보기에서 두 JSON 값을 보내 : 이것은 내 액션 코드가어떻게 내 스크립트를 EF

$.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); 
     } 
    }) 
} 

입니다. PMAllotmentEntryPMAllotmentDetailEntry 모델은 다음과 같습니다

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); 
        } 
       }) 
     } 
+1

를 다음과 같이 내 모델 : JSON.stringify ({myheader : lv_header, mydetail : lv_detail}),'그런데 왜 당신이 것을 사용하는' serializeObject()'함수 ('bool' 속성을 갖자 마자 실패합니다)와 같은 데이터를 보내면 뷰가 올바르게 생성되지 않는다는 것을 의미합니다. –

+0

가장 좋은 방법은 새 클래스를 만들고 그 "PMAllotmentEntry myheader, PMAllotmentDetailEntry mydetail"클래스는 하나의 클래스에 속합니다. – Floxy

+0

편집에 관해서는'contentType' 옵션과'data : lv_header + '&'+ lv_detail,'(그러나보기가 올바르게 생성되었다고 가정합니다. 그러나 그 중 아무 것도 표시하지 않았습니다. 이 코드는 그렇지 않다는 것을 나타냅니다) –

답변

0

은 가와 .cshtml 파일 대체 foreach 루프는 루프 루프에 대한

매우 중요한 foreach 문이다

포스트 방법을

[HttpPost] 
public ActionResult UpdateMachine(PMAllotmentEntry m) 
{ 
    //complete the task 
    return View(); 
} 
을 지금은 cshtml 파일에서 JQuery와 제거하고있어 단순히 사용 루프는 자식 모델 데이터를 반환하지 않습니다.

@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; } 

}