2017-01-24 10 views
0

ExternalProjectViewModelCertificateUniverSityViewModelCertificateInstitutionsViewModelの3つのコレクションを含む1つのViewModelがあります。Ajaxを使用して複数のオブジェクトをASP.NET MVCコントローラに送信

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; } 

} 

私のAjaxコード:

  $('#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 
        } 
       }); 


      }); 

私はコントローラにオブジェクトを送信したい場合は、まずLocalStorage からそれを取得し、それはそれを送る取得した後、コントローラの動作:

public virtual ActionResult CreatePrfile(CreateFreelancerProfileViewModel viewModel) 

私はviewModelの値を表示します。オブジェクトの数は2ですが、オブジェクトのプロパティはnullです。つまり、サーバーオブジェクトのプロパティ名はクライアントオブジェクトのプロパティ名と等しくなります。

のlocalStorageは

[{"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

ブラウザでリクエストを投稿し、私は、クライアント側のオブジェクトのプロパティで、この作業を行う – Steve

+0

@Steveを参照キャプチャ –

答えて

1

あなたはJSONペイロードとしてそれらを送ることができ値:

$.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'); 
    } 
}); 

これは、あなたがこれらの3つの変数ののlocalStorageからもらったインスタンスは、対応するJavaScriptの配列を表現することを前提としていその中のオブジェクト。

+0

を満たしている私はあなたのコードを試してみてください。しかし、それは –

+0

を変更しませんが、あなたは、サーバーに送信されます正確なペイロードを示してもらえますか?ローカルストレージから取得した 'ExternalProjects'と' CertificateUniverSitys'と 'CertificateInstitutions'はjavascript配列を表していないと思います。 –

+0

私は 'case'が' class'プロパティと一致するはずです。 'externalProjects:ExternalProjects 'の代わりに' ExternalProjects:ExternalProjects'を使ってみてください(これは暗闇の中の単なるショットです)。 – Alisson

関連する問題