JQuery Ajax调用没有将参数传递给ASP.NET Core MVC中的`Controller Method`?

时间:2018-02-18 17:47:21

标签: jquery ajax asp.net-core-mvc-2.0

在Ajax调用中,我将模型参数传递给Controller方法,但没有数据传递给Controller。

 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值,但这次没人工作。 我在做什么错了?

2 个答案:

答案 0 :(得分:3)

假设你的模型有公共属性并且url被正确映射,我看到的唯一缺失位是调用stringify来规范你的json。

data: JSON.stringify(Model),

我用以下方法对此进行了测试:

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

但我没有安装Core。

答案 1 :(得分:0)

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

            }