2015-10-09 2 views
-1

Я новая птица в MVC. Я хочу передать модель в вызов Ajax, для этого напишу следующий код. Но он всегда передает NULL ко всем свойствам.Модель Null при прохождении Ajax Call MVC?

$("#btnsubmit").click(function() { 

     alert('hello'); 
     var productModel = { 
      Name: '[email protected]', 
      Address: "Chai" 

     }; 
     $.ajax({ 
      type: "POST", 
      url: '@Url.Action("ContactDistributor", "AjaxCallTest")', 
      contentType: "application/json; charset=utf-8", 
      data: JSON.stringify({ model: productModel }), 

      dataType: "json", 
      success: function() { alert('Success'); }, 
      error: function (xhr) { 
       alert(xhr.error); 
      } 
     }); 
     return false; 

    }); 

МОДЕЛЬ:

public class AjaxCalltestModal 
{ 
    public int Id { get; set; } 
    public String Name { get; set; } 
    public String Address { get; set; } 

} 

Контроллер:

 [HttpPost] 
    public ActionResult ContactDistributor(WebApplication1.Models.AjaxCalltestModal a) 
    { 
     return Json("test"); 
    } 

Пожалуйста, помогите мне.

+0

'productModel' уже json, поэтому вам не нужно' JSON.stringify' при отправке данных. И ваш контроллер принимает параметр с именем 'a', поэтому ваши' data' должны быть 'data: {a: productModel}' – Dumisani

+0

использовать 'JSON.stringify (productModel)' –

+0

Удалить «contentType:» application/json; charset = utf- 8 ",' и измените параметр 'data' на' data: productModel, ' –

ответ

4

я решил проблему, используя следующий код:

$("#btnsubmit").click(function() { 

    alert('hello'); 
    var productModel = { 
     Name: '[email protected]', 
     Address: "Chai" 

    }; 
    $.ajax({ 
     type: "POST", 
     url: '@Url.Action("ContactDistributor", "AjaxCallTest")', 
     contentType: "application/json; charset=utf-8", 
     data: JSON.stringify({ 'model': productModel }), 

     dataType: "json", 
     success: function() { alert('Success'); }, 
     error: function (xhr) { 
      alert(xhr.error); 
     } 
    }); 
    return false; 

}); 

Спасибо за ваши усилия и комментарии ..

+0

Ваш вопрос и ответ выглядят одинаково. Какая разница? – GotaloveCode

+0

@GotaloveCode "данные: JSON.stringify ({model: productModel})," обновлено с помощью ": JSON.stringify ({'model': productModel})," –

+0

Это пропустил полностью – GotaloveCode

0
JSON.stringify({ model: productModel }) 

должен быть

JSON.stringify(productModel) 
1

наиболее вероятно, данные настройки как объект Javascript будет работать вместо Tyring чтобы Stringify его. Потому что, насколько я знаю, метод Ajax запрос уже делает это для вас

data: productModel 
Смежные вопросы