如何通过ASP.NET Core Web API中的FromBody清除默认值

时间:2018-02-26 21:27:00

标签: asp.net-web-api asp.net-core

我已经用C#编写了多年,但我是ASP.NET Core的新手。我创建了一个Web API,我从现有数据库生成我的Model类,并使用scaffolding为每个模型创建一个Controller,它给我Get,Put,Post和Delete。我的问题是如何知道调用者是否正在清除值,而值是C#对象的默认值?

例如,在Vue.js中我发送

var sendstuff = {userName: "TestUser1", userId: 7, email: null};

在C#中,我的用户对象有

public int UserId { get; set; }
public string UserName { get; set; }
public string Email { get; set; }
public string FavoriteColor { get; set; }

在我的控制器中,我的put方法开始

public async Task<IActionResult> PutUsers([FromRoute] int id, [FromBody] User user)

数据库中的我的用户实例是TestUser1,7,test @ test.com,purple。进入PutUsers的用户是TestUser1,7,null,null。

此时,我想将用户7发送的值与用户7的数据库中的值进行比较。但是,由于FavoriteColor(未发送)和Email(发送)看起来与它们都显示为空,我怎么知道它是否应该被改变?我希望test@test.com被清除,但我希望保留紫色。

似乎我唯一的另一个选择是让Vue.js在每个表的每一列中发送,其值为我不想更改的原始值或新值。这感觉不对。

我错过了什么吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

我能想到的唯一方法是接受Generic Json-Object并检查属性是否已设置。

大多数Json Frameworks都可以从Json对象转换为特定的对象,因此您甚至不需要更改其他代码。