ASP.NET MVC后端控制器用模型 接收前端ajax数据为空

 1、前端js代码

如下:

const formData = {
    DeptName: 'D001',
    Phone: '12345678900'
};

$.ajax({
    url: "/Phone/SavePhone1",
    type: "POST",
    contentType: "application/json",
    data: JSON.stringify(formData), //必须要JSON.stringify
    su***ess: function (result) {
        if (result > 0) {
            alert("保存成功!")
        }
        else {
            alert("保存失败!")
        }
    },
    error: function (xhr, status, error) {
        alert("操作失败:" + error);
    }
});

2、问题描述

直接使用DeptPhone模型接收,接收不到数据,使用[FromBody]也不行: 

3、解决方案

改用Request.InputStream来获取数据,然后使用JsonConvert来转换成实体,代码如下:

public int SavePhone()
{
    // 用模型接收不了ajax传过来的json数据,使用Request.InputStream获取
    var phone = Newtonsoft.Json.JsonConvert.DeserializeObject<DeptPhone>(new StreamReader(Request.InputStream).ReadToEnd());
    int result = _deptPhone.SavePhone(phone);
    return result;
}

其他:

建议不要在MVC控制器(继承System.Web.Mvc.Controller的类)里面接收Ajax的请求,可以另外创建一个webapi控制器(继承System.Web.Http.ApiController的类)来处理数据的异步请求,参考ASP.*** MVC项目内使用ApiController

转载请说明出处内容投诉
CSS教程网 » ASP.NET MVC后端控制器用模型 接收前端ajax数据为空

发表评论

欢迎 访客 发表评论

一个令你着迷的主题!

查看演示 官网购买