JQuery Ajax 调用未将参数传递给 ASP.NET Core MVC 中的“Controller Method”?

JQuery Ajax call not passing parameters to `Controller Method` in 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 值的另一个项目中有效,但这次没有人在工作。 我做错了什么?

假设您的模型具有 public 属性并且 url 已正确映射,我看到的唯一缺失的部分是调用 stringify 以规范化您的 json.

data: JSON.stringify(Model),

我用以下方法测试过:

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

但是我没有安装Core

你可以使用$.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)
            {

            }