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

1、前端js代码

如下:

javascript 复制代码
const formData = {
    DeptName: 'D001',
    Phone: '12345678900'
};

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

2、问题描述

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

3、解决方案

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

cs 复制代码
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;
}
相关推荐
神仙别闹2 天前
基于ASP.NET MVC+SQLite开发的一套(Web)图书管理系统
sqlite·asp.net·mvc
神仙别闹2 天前
基于ASP.NET+SQL Server实现(Web)企业进销存管理系统
前端·后端·asp.net
咖丨喱3 天前
【Action帧简要分析】
服务器·数据库·asp.net
发粪的屎壳郎3 天前
ASP.NET Core 8 轻松配置Serilog日志
后端·asp.net·serilog
程序员秘密基地5 天前
基于html,css,vue,vscode,vs2022,asp.net,aspnet,.net,c#,mysql数据库,在线健身,俱乐部管理系统
前端·vue.js·后端·mysql·asp.net
wstcl5 天前
让你的asp.net网站在调试模式下也能在局域网通过ip访问
后端·tcp/ip·asp.net
合作小小程序员小小店6 天前
web网页开发,在线%ctf管理%系统,基于html,css,webform,asp.net mvc, sqlserver, mysql
mysql·sqlserver·性能优化·asp.net·mvc
专注VB编程开发20年9 天前
开机自动后台运行,在Windows服务中托管ASP.NET Core
windows·后端·asp.net
圆滚滚肉肉10 天前
后端MVC(控制器与动作方法的关系)
后端·c#·asp.net·mvc
冰茶_20 天前
ASP.NET Core API文档与测试实战指南
后端·学习·http·ui·c#·asp.net