2012-03-07 12 views
6

Geçiş Kompleks JSON bir MVC 3 Eylem

Locations eylem parametre modeline doldurulur MVC 3'te bir eyleme karmaşık bir JSON nesnesi iletir çalışırken ben bazı garip sonuçlar alıyorum

için Nesne, ancak bu ad ve konum değil.

ko.toJS(testViewModel) yaparsam, ad ve konum var, ancak konumlar boş?

kullanıyorum 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") 
    } 

jQuery ajax ile onu gönderme:

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

MVC Eylem:

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

Modeller:

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 

cevap

15

AJAX istekte application/json içerik türünü belirlemeyi deneyin:

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

Teşekkür Darin !! İşe yaradı! Yakında başka bir bira alacağım! – Sam

+0

Karmaşık modelleri bu şekilde ayrıştırmak ve bunları yazılan nesneler olarak denetleyici eylemine almak mümkün mü? Çünkü aynı şeyi yapmaya çalışıyorum ama nesnenin koleksiyonu, örneklerle birlikte, boş özellik değerleri ile birlikte gelir. –

+0

@GustavoRubio, evet, rasgele karmaşık nesneleri ve koleksiyonları kullanmak mümkündür. JSON serileştirilemediği için yalnızca dairesel nesne referansları desteklenmez. –