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

问题描述 投票:0回答:1

我已经用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)

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

此时,我想将用户7发送的值与用户7的数据库中的值进行比较。但是,由于FavoriteColor(未发送)和Email(发送)看起来都相同如果为null,我如何知道是否应该更改?我希望[email protected]被清除,但我希望保留紫色。

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

我错过了什么吗?

提前致谢!

asp.net-web-api asp.net-core
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.