首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Asp.net核心MVC post参数始终为空

Asp.net核心MVC post参数始终为空
EN

Stack Overflow用户
提问于 2016-07-19 18:29:23
回答 4查看 13.5K关注 0票数 18

我是MVC核心的新手。

我已经创建了一个带有MVC核心的项目,其中有一个控制器。此控制器具有Get和Post操作方法。如果我使用查询字符串将数据传递给Get方法,它可以很好地工作,但是当我将复杂的JSON传递给post方法时,它总是显示为null。

下面是我正在做的事情:

发布请求

代码语言:javascript
复制
URL: http://localhost:1001/api/users
Content-Type: application/json
Body: 
{
   "Name":"UserName",
   "Gender":"Gender of the user",
   "PhoneNumber":"PhoneNumber of the user"
}

这里是操作方法

代码语言:javascript
复制
[HttpPost]
[Route("api/users")]
public async Task<IActionResult> Post([FromBody]User newUser)
{
   ...
}

当post请求被调用时,newUser总是显示null。如果我删除FromBody属性,那么我会收到newUser对象,但是它的所有字段都是空的。

请在这个问题上帮助我并指导我。

编辑的

下面是我的用户

代码语言:javascript
复制
public class User{

   public int Id { get; set; }
   public string Name { get; set; }
   public string Gender { get; set; }
   public string PhoneNumber { get; set; }
}

我对json数据执行了与描述的here相同的操作,但仍然收到null。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-07-21 10:22:35

这可能是由于处理空值的方式所致。在AddJsonOptions中将NullValueHandling设置为Ignore,看看是否有效。

代码语言:javascript
复制
public void ConfigureServices(IServiceCollection services)
{
    services
        .AddMvc()
        .AddJsonOptions(jsonOptions=>
        {
            jsonOptions.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
        });
}
票数 13
EN

Stack Overflow用户

发布于 2017-01-06 04:19:23

注意最初的方法Post([FromBody] User newUser)

对于谷歌的未来读者来说,如果方法是Post(User newUser),也可能会出现同样的问题

注意缺少[FromBody]。这与以前的MVC版本不同,在MVC之前的版本中,这些参数通常是推断出来的。

如果您是一名现有的MVC5开发人员,并且发现了这个关于AspNetCore.MVC,的页面,那么一定要仔细检查您是否在相关的地方装饰了[FromBody]

票数 11
EN

Stack Overflow用户

发布于 2016-07-20 02:18:42

我创建了新的ASP.NET核心项目,添加了您的功能,并且它工作正常。请在github上查看this project

此外,还可以从浏览器控制台查看与此控制器进行简单通信的日志屏幕截图:Console output

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38455954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档