2014-12-03 28 views
2

我已經有了對象的數組中的jQuery:發帖數組和表單數據控制器 - MVC阿賈克斯

我需要張貼此我控制器:

[HttpPost] 
public ActionResult CreateMultipleCasesFormPost(CreateMultipleCasesModel model) 
{ 
    return PartialView("_CreateMultipleCases", model); 
} 

我的視圖模型:

public class CreateMultipleCasesModel 
{ 
    [Display(Name = "Selected Customers")] 
    public List<CustomerList> Customers { get; set; } 

我需要從jQuery傳遞數組和從此表單到我的控制器(我的視圖模型包含其他屬性) :

$('#createMultipleCasesForm') 

這是我的帖子表格的jQuery代碼:

$('#createMultipleCasesBtn').click(function() { 
      var btn = $(this); 
      var mUrl = btn.data('actionurl'); 

      var formModel = $('#createMultipleCasesForm').serializeArray(); 
      var customerList = customersList.selectedCustomers(); 

      var requestData = { 
       model: formModel, 
       Customers: customerList 
      }; 

      var sData = JSON.stringify(requestData); 

      $.ajax({ 
       url: mUrl, 
       type: 'POST', 
       dataType: 'json', 
       contentType: 'application/json; charset=utf-8', 
       data: sData, 
       success: function (response) { 

        debugger; 

       }, 
       error: function (response) { 
        $('#ErrorMessage').html('<span class="icon black cross"></span>' + response.Message); 
       } 
      }); 

     }); 

我從jQuery的模式是不綁定的客戶對象的存儲陣列或表單,我在做什麼錯在這裏?

編輯

,當我回來後我的狀態會發生什麼: My Customers Array in Model is NULL, all other Fields in my form are not posting back either

+0

你有什麼錯誤? – 2014-12-03 09:56:12

+0

我沒有收到錯誤,問題是我的模型從jQuery沒有綁定到我的MVC控制器模型 – 2014-12-03 10:00:30

+0

@DawoodAwan您可以將您的數組轉換爲json格式。 – Prateek 2014-12-03 10:04:36

回答

3

我找到了解決這並獲得成功對我來說:

$('#createMultipleCasesBtn').click(function() { 
     var btn = $(this); 
     var mUrl = btn.data('actionurl'); 

     var formModel = $('#createMultipleCasesForm').serializeObject(); 

     formModel['Customers'] = customersList.selectedCustomers; 

     var sData = JSON.stringify(formModel); 

     $.ajax({ 
      url: mUrl, 
      type: 'POST', 
      dataType: 'json', 
      contentType: 'application/json; charset=utf-8', 
      data: sData, 
      success: function (response) { 

      }, 
      error: function (response) { 
       $('#ErrorMessage').html('<span class="icon black cross"></span>' + response.Message); 
      } 
     }); 

    }); 

此功能下面從用於回答這裏:Convert form data to JavaScript object with jQuery

$.fn.serializeObject = function() { 
     var o = {}; 
     var a = this.serializeArray(); 
     $.each(a, function() { 
      if (o[this.name] !== undefined) { 
       if (!o[this.name].push) { 
        o[this.name] = [o[this.name]]; 
       } 
       o[this.name].push(this.value || ''); 
      } else { 
       o[this.name] = this.value || ''; 
      } 
     }); 
     return o; 
    };