2014-12-03 3 views
2

У меня есть массив объектов в JQuery:Проводка массива и данных формы на контроллер - MVC Ajax

Мне нужно отправить это на мой контроллер:

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

Мой ViewModel:

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

Мне нужно передать массив из JQuery и данные из этой формы в мой контроллер (My View Model содержит другие свойства) :

$('#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 не Binding либо массив объектов Заказчика или форму, что я делаю неправильно здесь?

EDIT

Что происходит, когда я отправляю назад моя форма: My Customers Array in Model is NULL, all other Fields in my form are not posting back either

+0

Какая ошибка вы получаете? –

+0

Я не получаю ошибку, проблема в моей модели от jQuery не привязана к моей модели контроллера MVC –

+0

@DawoodAwan. Вы можете преобразовать ваш массив в json-формат. – Prateek

ответ

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; 
    }; 
Смежные вопросы