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