2017-08-16 196 views
0

您好我有一個視圖,我在其中編寫了一個jQuery腳本來將html表值傳遞給JSON對象,如下所示;如何將jQuery數組對象傳遞給控制器​​方法

  var contactData = []; 
      $('#tblContacts > tbody > tr').each(function() { 
       contactData.push({ 
        firstName: $(this).find('input.c-firstname').val(), 
        lastname: $(this).find('input.c-lastname').val(), 
        phone: $(this).find('input.c-phone').val(), 
        email: $(this).find('input.c-email').val() 
       }) 
      }) 

雖然我離開了上述代碼的一部分,但我確認contactData對象具有所需要的數據。所以我在那裏沒有問題。

我的挑戰:現在我需要如下圖所示傳入我的控制器方法來獲取值到數據庫中的對象contactData;

 [HttpPost] 
     [ValidateAntiForgeryToken] 
     public IActionResult Create(CreateBusinessPartnerVM businessPartnerVM) 
     { 
      if (ModelState.IsValid) 
      { 
       var businessPartner = new BusinessPartner 
       { 
        CardCode = prefixCardCode + businessPartnerVM.CardName.ElementAt(0) + DateTime.Now.ToString(), 
        CardName = businessPartnerVM.CardName, 
        CardType = businessPartnerVM.CardType, 
        Email = businessPartnerVM.Email, 
        Phone = businessPartnerVM.Phone, 
        IsActive = businessPartnerVM.IsActive, 
        ContactPersons = //contactData from the jquery script in the view 
       }; 
      } 
     } 

我已搜索,但仍未找到與我的要求類似的東西。我希望在這裏得到快速的幫助。謝謝。

+0

數據我猜你正在使用的形式將數據提交到控制器。 如果是這樣,您可以將數據添加到隱藏的輸入類型。 – mausinc

+0

您是否嘗試過使用JQuery AJAX庫?或者如果你不能使用JQuery,那麼Javascript有一個內置的XMLHttpRequest類。 –

+0

@mausinc是的。我轉換爲json對象的html表格在一個表單標籤內。問題是我如何將對象傳遞給隱藏的輸入類型?請原諒我,如果這是一個簡單的任務。我只是不知道該怎麼做。 –

回答

1

根據你的代碼,我猜你正在使用表單向你的控制器提交數據。 如果是這樣,您可以將數據添加到隱藏的輸入類型。

請與您的Chrome檢查隱藏字段的ID,並添加這樣

$('#hiddenFieldId').val(contactData); 
基於您的代碼
+0

我使用Newtonsoft的Json將字符串反序列化爲json對象,並以我想要的方式使用它。非常感謝你的領導。 –

1

您需要編輯您的CreateBusinessPartnerVM模型。

添加一個新屬性,該屬性是ContactData對象的數組。這樣您就可以在業務夥伴的同一模型中發佈聯繫人數據並進一步處理。

有點像這樣;

public class CreateBusinessPartnerVM { 
    .... other properties... 
    public ContactData[] ContactList { get; set; } 
} 

public class ContactData { 
    public string FirstName {get; set;} 
    public string LastName {get; set;} 
    public string Phone {get; set;} 
    public string Email {get; set;} 
} 

一旦這種情況發生,您可以沿着正在提交的主對象傳遞js contactData對象。

*新的編輯*

我看到你的表已輸入字段。 你只需要做兩件事情提交聯繫人數據

  1. 確保您的表爲「ContactPersons [0] .firstName」 withing形式的表
  2. 名稱的所有輸入字段和「ContactPersons [ 0] .lastName「 零將隨表格中的每一行遞增。即第一行爲0,第二行爲1,依此類推。 這會將對象作爲ContactPersons數組與主對象一起發佈。

只要確保您使用字段的名稱和他們的情況。

+0

這與View Model中的ContactPersons屬性相似。我已經有了。但是,我如何通過主對象將json ContactData傳遞給屬性? –

+0

好的,我可以幫你。你能告訴我你當前的主要對象是如何傳遞的嗎? – Shahbaz

+0

謝謝Shabhbaz。請看看我擁有我的控制器的問題。主要對象是正在創建的「BusinessPartner」。並且參數是ViewModel'CreateBusinessPartnerVM'。或者你想看看ViewModel本身? –

相關問題