2017-01-24 5 views
0

Ich habe ein ViewModel, das drei Collection ExternalProjectViewModel, CertificateUniverSityViewModel, CertificateInstitutionsViewModel enthält.Mehrere Objekte mit Ajax an den ASP.NET MVC-Controller senden

CreateFreelancerProfileViewModel.cs

public class CreateFreelancerProfileViewModel : BaseViewModel 
{ 
    // More ... 
    public List<ExternalProjectViewModel> ExternalProjects { get; set; } 

    public List<CertificateUniverSityViewModel> CertificateUniverSitys { get; set; } 

    public List<CertificateInstitutionsViewModel> CertificateInstitutions { get; set; } 

} 

Meine Ajax-Code:

  $('#Controller').on('click','#SaveProfile', 

      function() { 

       debugger; 
       var CertificateInstitutions = 
        JSON.parse(localStorage.getItem("CertificateInstitutionsListLocal")); 

       var CertificateUniverSitys = 
        JSON.parse(localStorage.getItem("CertificateUniverSitysListLocal")); 

       var ExternalProjects = 
        JSON.parse(localStorage.getItem("ExProjectListLocal")); 

       $.ajax({ 
        url : '@Url.Action(MVC.Freelancer.Profile.CreatePrfile())', 
        method: "POST", 
        data: { 
         ExternalProjects, 
         CertificateUniverSitys, 
         CertificateInstitutions 
        } 
       }); 


      }); 

Wenn ich Objekte Möchten Sie schicken Controller zuerst von LocalStorage bekommen und es es nach dir schicken Controller-Aktion:

public virtual ActionResult CreatePrfile(CreateFreelancerProfileViewModel viewModel) 

Wenn ich sehe viewModel Werte zeigen meine Objekte Count Das ist 2, aber Objekte Eigenschaften ist null.so, dass meine Server-Objekteigenschaften Name gleich mit dem Client-Objekt Eigenschaftenname.

Localstorage Werte

[{"ExternalProjects":{"Name":"wqeqwe","Body":"wqewqe","Url":‌​"wqewqe"}}] 

[{"CertificateUniverSity":{"Name":"sad","Description":"sadas‌​","DateOfGets":"sad"‌​,"CertificateType":"‌​2","Field":"sadasd",‌​"UniName":"sad","Cer‌​tificateUniverSityLe‌​vel":"2"}}] 
+0

Erfassung, die Anfrage in Ihrem Browser veröffentlichen und – Steve

+0

sehen @Steve ich diese Arbeit in Client-Seite Objekteigenschaften zu tun ist –

Antwort

1

Sie sie als JSON Nutzlast senden könnte:

$.ajax({ 
    url : '@Url.Action(MVC.Freelancer.Profile.CreatePrfile())', 
    method: 'POST', 
    contentType: 'application/json', 
    data: JSON.stringify({ 
     externalProjects: ExternalProjects, 
     certificateUniverSitys: CertificateUniverSitys, 
     certificateInstitutions: CertificateInstitutions 
    }), 
    success: function(result) { 
     alert('data sent successfully'); 
    } 
}); 

Dies setzt voraus, dass die Instanzen, die Sie aus der localstorage dieser drei Variablen bekam repräsentieren Javascript-Arrays mit dem entsprechenden Objekte darin.

+0

füllen versuche ich Ihren Code aber es ändert sich nicht –

+0

Könnten Sie die genaue Nutzlast zeigen, die an den Server gesendet wird? Ich vermute, dass die 'ExternalProjects',' CertificateUniverSitys' und 'CertificateInstitutions', die Sie vom lokalen Speicher erhalten haben, keine Javascript-Arrays darstellen. –

+0

Ich würde raten, dass wir das 'case' mit den' class' Eigenschaften übereinstimmen sollten. Versuchen Sie 'ExternalProjects: ExternalProjects' anstelle von' externalProjects: ExternalProjects' zu verwenden (dies ist nur eine Aufnahme im Dunkeln). – Alisson

Verwandte Themen