2014-10-16 5 views
2

발견 된 메서드를 시도했지만 여전히 문제를 해결할 수 없습니다. Jquery Aja를 통해 객체 목록을 전달하고 있지만 제어기가 null 값을 받고있는 것으로 보입니다 (목록 수를 잘 인식하고있는 것 같습니다). 다음asp mvc 컨트롤러가 아약스에서 null 값을 받음

JQuery와 코드 :

var xmlids = Array(); 

     for (var i = 0; i < orderId.length; i++) { 
      var xdata = { 
       "XmlOid": "" +orderId[i] + "", 
       "CourierCompany": $("#CourierCompany_"+orderId[i]).val() , 
       "CourierService": $("#CourierService_" + orderId[i]).val(), 
       "StoreId" : storeId 
      }; 
      xmlids.push(xdata); 
     } 

var data = { invoices: xmlids }; 


     $.ajax({ 
      url: purl, 
      type: "POST", 
      dataType: "json", 
      //contentType: "application/json;", 
      async: false, 

      data: data, 

컨트롤러 PARAM은 다음과 같이

public JsonResult ProcessSaleOrder(List<XMLInvoiceGeneration> invoices)

개체이다

public class XMLInvoiceGeneration 
    { 
     public Int64 XmlOid { get; set; } 
     public string CourierCompany { get; set; } 
     public string CourierService { get; set; } 
     public Int64? StoreId { get; set; } 
    } 

어떤 도움도 인정.

+0

DevTools (브라우저에서 F12를 클릭하고 네트워크 모니터링을 켜십시오)에서 ajax 호출을 통해 정확히 게시되는 것을 확인할 수 있습니까? –

+0

자바 스크립트에서 XmlOid를 인용 한 이유가 있습니까? 그것을 제거한 다음 실행하십시오. – Gjohn

+0

은 배열 i 콘솔을 기록했으며 모든 값이 올바르게 설정되었습니다. @Gjohn은 그 문자열을 int로 만드는 것을 추가했습니다. 그러나 문제는 동일하거나 부합하지 않습니다. –

답변

1

: "응용 프로그램/JSON을;"JSON.stringify(data)

data: JSON.stringify(data) 

PS와,

및 전송 데이터 : URL에 대한 모범 사례 : url: "@Url.Action("method","controller")"

+0

답변 해 주셔서 감사합니다. 응답은 80 %를 작동하는 것처럼 보였다. 다음은 작동했습니다 : contentType : "application/json; charset = utf-8;" 그런 다음 데이터를 훼손했다. –

3

문제점을 재현하려고 시도했습니다.

나는 새로운 ASP.NET MVC 웹 응용 프로그램을 작성하고 홈 컨트롤러의 인덱스보기에, 나는 기본적으로 몇 가지 임시 데이터를 만들었지 만 여전히 원래의 아이디어를 사용하려고 다음

<input type="button" id="send" value="Send" /> 
@section scripts{ 
    <script type="text/javascript"> 
     $(function() { 
      $("input#send").on("click", function() { 
       var xmlids = Array(); 

       for (var i = 0; i < 2; i++) { 
        var xdata = { 
         "XmlOid": 1, 
         "CourierCompany": "TempData", 
         "CourierService": "Temp", 
         "StoreId": 2 
        }; 

        xmlids.push(xdata); 
       } 

       var data = { invoices: xmlids }; 

       $.ajax({ 
        url: "/Home/ProcessSaleOrder", 
        type: "POST", 
        dataType: "json", 
        async: false, 
        data: data 
       }); 
      }); 
     }) 
    </script> 
} 

을 추가했다. 내 컨트롤러는 다음과 같습니다

[HttpPost] 
public ActionResult ProcessSaleOrder(List<XMLInvoiceGeneration> invoices) 
{ 
    return new EmptyResult(); 
} 

I 버튼을 클릭하고 컨트롤러에 중단 점

invoices 매개 변수는 내가 자바 스크립트 코드에 설정된 값 2 개 항목 모두 포함되어 있습니다. 왜 코드가 작동하지 않는 지 잘 모르겠지만, 아마도 내 문제를 좁히는 데 도움이되는 템플릿으로 템플릿을 사용할 수 있습니다. 이 주석 // ContentType을 시도

1

내가 가진 목록을 컨트롤러에 보내는 것과 동일한 문제. 많은 노력을 기울인 후 null로 보내는 이유를 발견했습니다. 리턴 타입 (Class)이있는 필드는 {get; 세트; }

$.ajax({ 
      url: "/Home/CreateTasks", 
      data: ko.toJSON({Id: this.Id, tasks: objList }),    
      type: "POST", 
      dataType: "json", 
      processData: true, 
      contentType: "application/json; charset=utf-8", 
      success: data => { 
} 

그리고 내 모델 클래스는 다음과 같습니다

public class TaskFields 
{ 
    public string Title; 
    public string Activity; 
} 
public class CreateTaskInput 
{ 
    public int Id; 
    public TaskFields TaskProperties; 
} 

그리고 내 컨트롤러 방법은 다음과 같습니다 : 가되기 전에

public class TaskFields 
{ 
    public string Title { get; set; } 
    public string Activity { get; set; } 
} 
public class CreateTaskInput 
{ 
    public int Id { get; set; } 
    public TaskFields TaskProperties { get; set; } 
} 

[HttpPost] 
public JsonResult MethodName(int Id, List<CreateTaskInput> tasks) 
{ 
} 

내가 아니다 이 대답이 나을 것입니다. 너. 그러나 비슷한 실수를하는 사람을 도울 수 있습니다. 감사!

관련 문제