Вызов JQuery Ajax не передает параметры в «Метод контроллера» в ASP.NET Core MVC?

В вызове Ajax я передаю параметр модели методу контроллера, но данные не передаются контроллеру.

 var Model =
  {
     email: "123",
     phone:"2323"
  };
   $.ajax({
    type: "POST",
    url: `/Home/AddEmailPhone/`,
    data: Model,
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (data) {
        console.log(data);
        console.log(data.length);
    },

    failure: function (data) {
       console.log("failure");
    }, 
    error: function (data) {
        console.log("error");
    }

});

И метод контроллера выглядит так

 public JsonResult AddEmailPhone([FromBody]EmailPhoneModel Model)
 {
      Return Json("json");
 }

Вызов ajax успешно вызывает Method, но данные не передаются.

Я также пытался передать значение через URL-адрес, например:

 `/Home/AddEmailPhone/email= ${email}&phone=${phone}`

это сработало в моем другом проекте, где я передавал значение int, но на этот раз никто не работает. что я делаю не так?


person Sabir Hossain    schedule 18.02.2018    source источник
comment
Попробуйте сделать AddEmailPhone([FromBody]EmailPhoneModel Model)   -  person bobek    schedule 18.02.2018
comment
@ Hubert Jarema Я забыл написать, я также пробовал с [FromBody]   -  person Sabir Hossain    schedule 18.02.2018
comment
Есть ли у вашего EmailPhoneNumber общедоступные геттеры и сеттеры для Email и Phone?   -  person bobek    schedule 18.02.2018
comment
Конечно, все они являются государственной собственностью.   -  person Sabir Hossain    schedule 18.02.2018


Ответы (2)


Предполагая, что ваша модель имеет общедоступные свойства и URL-адрес отображается правильно, единственный недостающий бит, который я вижу, это вызов stringify для нормализации вашего json.

data: JSON.stringify(Model),

Я проверил это с помощью:

public JsonResult AddEmailPhone(EmailPhoneModel Model)
{
    return Json("json");
}

Но у меня не установлено ядро.

person derloopkat    schedule 18.02.2018

вы можете использовать $.get

//at client side
var url = "apiurl/method1";
var par1="valu";
$.get(url, { contParam1: par1}, function (data)
   {
     //write code here after success 
   } 
    );
//at server side
[HttpGet("method1")]
public ActionResult<IEnumerable<string>> method1([FromQuery(Name = "contParam1")] string contParam1)
            {

            }
person Mahmoud    schedule 30.09.2019