2013-07-30 3 views
0

아래와 같이 knockout 객체를 전달하려고합니다.
// AJAx가없는 // ko.utils.postJson을 사용하여 데이터를 전달할 때 데이터가 my로 전달됩니다. 하지만 나는 아약스에 의해 게시하려고 할 때이 작업으로 아래의 컨트롤러에Knockout 객체 JSON MVC ASP.Net로 컨트롤러에 전달

function TaskListViewModel() { 
    var self = this; 

    self.availableMeals = [ 
    { UserName: "Standard", UserId: 0 }, 
    { UserName: "Premium", UserId: 34 }, 
    { UserName: "Ultimate", UserId: 290 } 
    ]; 


     self.save = function() { 

     // ko.utils.postJson(location.href, { task: this.availableMeals }); 


      $.ajax(location.href,{ 

       data: ko.toJSON({ task: this.availableMeals });, 
       type: 'POST', 
       dataType:'json', 
       contentType: 'application/json', 
       success: function (result) { alert(result) } 
      }); 
    }; 



    } 

    ko.applyBindings(new TaskListViewModel()); 

에 대한 null 값을 얻을 수는 "작업"에 컨트롤러

[HttpPost] 
    public ActionResult About([FromJson] IEnumerable<UserProfile> task) 
    { 
      return RedirectToAction("Login","Account"); 
    } 
+0

... task의 값 : 게시 될 때 this.availableMeals. 그것은 유효한 json인가. – Kieran

답변

0

내가 전화 코드를 변경하려고 할 것 Ajax 호출에 저장된 자체 참조는 다음과 같습니다.

$.ajax(location.href,{ 
     data: ko.toJSON({ task: self.availableMeals });, 
     type: 'POST', 
     dataType:'json', 
     contentType: 'application/json', 
     success: function (result) { alert(result) } 
    }); 
}; 

나는 당신이 this이 당신의 Ajax 호출 참조입니다 잃고 범위의 문제가있는 것으로 추측하고있다.

+0

콘텐트 타입은 전달 된 콘텐트 타입을 제거 할 때 데이터가 통과하지 못하게하지만 콘트롤러가 JSON을 수신 할 때 3 개의 객체가 수신되지만 UserName과 UserId는 strill null임을 알 수 있습니다. 응답 해 주셔서 감사합니다. – SamSamet

관련 문제