2012-03-07 36 views
6

Tôi nhận được một số kết quả kỳ lạ trong khi cố gắng để vượt qua một đối tượng JSON phức tạp để một hành động trong MVC 3.đèo Complex JSON Object để một MVC 3 Action

Các Locations được dân cư trên mô hình tham số hành động, nhưng tên và vị trí thì không.

Nếu tôi làm ko.toJS(testViewModel) thì tên và vị trí ở đó, nhưng vị trí trống?

Tôi đang sử dụng knockout.js:

var testViewModel = { 
     Name: ko.observable("Joe Bob"), 
     Locations: ko.observableArray([ 
      { ID: 1, Name: "Salem, OR" }, 
      { ID: 2, Name: "Big Bear Lake, CA" }, 
      { ID: 3, Name: "Big Bear City, CA" } 
     ]), 
     Position: ko.observable("Manager") 
    } 

gửi nó qua jQuery ajax:

$.ajax({ 
      url: "/ClaimsAuthority/Home/TestIt", 
      type: "POST", 
      data: ko.toJSON(testViewModel), 
      success: function (data, status, xhr) { 
       //ko.applyBindings(data); 
      } 
     }); 

MVC Hành động:

<HttpPost()> 
     Public Function TestIt(model As TestModel) As ActionResult 
      Return Json(model) 
     End Function 

Models:

Public Class TestModel 
    Public Property ID As Integer 
    Public Property Name As String 
    Public Property Locations As ICollection(Of LocationModel) 
    Public Property Position As String 
End Class 

Public Class LocationModel 
    Public Property ID As Integer 
    Public Property Name As String 
    Public ReadOnly Property DisplayText As String 
     Get 
      Return String.Format("({0}) {1}", ID, Name) 
     End Get 
    End Property 
End Class 

Trả lời

15

Thử đặt loại nội dung thành application/json trong yêu cầu AJAX của bạn:

$.ajax({ 
    url: '/ClaimsAuthority/Home/TestIt', 
    type: 'POST', 
    contentType: 'application/json', 
    data: ko.toJSON(testViewModel), 
    success: function (data, status, xhr) { 
     //ko.applyBindings(data); 
    } 
}); 
+0

Cảm ơn Darin !! Điều đó đã hiệu quả! Tôi sẽ nợ bạn một ly bia khá sớm! – Sam

+0

Có thể phân tích các mô hình phức tạp theo cách này và nhận chúng trong hành động điều khiển như các đối tượng đã nhập không? Bởi vì tôi đang cố gắng làm điều tương tự nhưng bộ sưu tập của đối tượng, mặc dù với các cá thể, đi kèm với các giá trị thuộc tính rỗng. –

+0

@GustavoRubio, vâng, có thể sử dụng các đối tượng và bộ sưu tập tùy ý phức tạp. Chỉ các tham chiếu đối tượng tròn không được hỗ trợ bởi vì chúng không thể được tuần tự hóa JSON. –

Các vấn đề liên quan