gpt4 book ai didi

c# - 如何在 Asp.Net Core 模型绑定(bind)中区分 JSON 中的空数据和不存在数据?

转载 作者:行者123 更新时间:2023-11-30 12:54:17 32 4
gpt4 key购买 nike

我想在 Asp.Net Core 中的一个 Action 中区分这两个 json 输入:

{
"field1": null,
"field2": null
}

{
"field1": null,
}

我在 C# 中有一个像这样的普通类:

public class MyData
{
public string Field1 { get; set;}
public string Field2 { get; set;}
}

我想运行一个可以接受 null 作为值的对象的部分更新,但是当该字段不在输入中时,这意味着我根本不想更新这个字段(设置它的其他东西为空)。

最佳答案

这就是我最终所做的,因为所有其他选项似乎都过于复杂(例如 jsonpatch、模型绑定(bind))或者不会提供我想要的灵 active 。

这个解决方案意味着要为每个属性编写一些样板,但不要太多:

public class UpdateRequest : PatchRequest
{
public string Name
{
get => _name;
set { _name = value; SetHasProperty(nameof(Name)); }
}
}

public abstract class PatchRequest
{
private readonly HashSet<string> _properties = new HashSet<string>();

public bool HasProperty(string propertyName) => _properties.Contains(propertyName);

protected void SetHasProperty(string propertyName) => _properties.Add(propertyName);
}

然后可以像这样读取值:

if (request.HasProperty(nameof(request.Name)) { /* do something with request.Name */ }

这是使用自定义属性验证它的方式:

var patchRequest = (PatchRequest) validationContext.ObjectInstance;
if (patchRequest.HasProperty(validationContext.MemberName) {/* do validation*/}

关于c# - 如何在 Asp.Net Core 模型绑定(bind)中区分 JSON 中的空数据和不存在数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58644745/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com