我有一个用于创建/更新其表中有5个字段的数据对象的端点。
有5个创建字段:
class A
{
string field1
string field2
int field3
int field4
bool field5
}
当请求者致电我的端点时,我想检测请求正文中张贴的字段。因为我将使用那些发布的字段进行更新。我不想使用其他字段。
例如:请求者使用5个字段创建了数据。一段时间后,requster刚刚发布了3个要更新的字段。他不想更新其他2个字段。因此,我需要检测发送到端点的字段,并仅更新这三个字段。
答案 0 :(得分:0)
如果客户端不包含模型中的一个或多个字段,则称为“欠帐”。在这种情况下,除非您已根据需要(使用属性)将缺少的字段标记为必填字段,否则它们将被设置为默认值。
因此,假设您可以为每个字段设置一个“魔术”默认值(一个不是来自客户端的值),则可以确定哪些是由客户端发送的,哪些不是,并相应地更改逻辑。例如:
class A {
string field1 = "nosave";
string field2 = "nosave";
int field3 = -1;
int field4 = -1;
bool field5;
}
public IActionResult foo(A request) {
if(request.A != "nosave") { saveField(request.A); }
...
}
棘手的部分是布尔值之类的字段,在其中不能忽略任何可能的值。为此,您可以使用可为空的字段。
另一种选择是让客户端除了发送字段之外,还发送应更新的字段列表。