我已经用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在每个表的每一列中发送,其值为我不想改变的原始值或新值。这感觉不对。
我错过了什么吗?
提前致谢!
我能想到的唯一方法是接受Generic Json-Object并检查是否设置了属性。
大多数Json Frameworks都能够从Json对象转换为特定的对象,因此您甚至不需要更改其他代码。