gpt4 book ai didi

c# - FromBody 不绑定(bind) Inherited Id

转载 作者:太空宇宙 更新时间:2023-11-03 14:58:28 27 4
gpt4 key购买 nike

客户类继承自“Id”属性可用的实体。但是每当我将一个 JSON 对象发布到我的 Controller 时,除了“Id”之外的所有属性都将被启动。 “Id”始终为 0

你知道哪里出了问题吗?

public abstract class Entity<TId> : IEquatable<Entity<TId>>
{
public TId Id { get; protected set; }
}

public class Customer : Entity<int>
{
public string FirstName { get; set; }
public string LastName { get; set; }
}

//Controller
public void Post([FromBody] Customer customer)
{
if (customer.Id > 0)
_customeRepository.Update(customer);

_customeRepository.Insert(customer);
}

最佳答案

Id 属性没有公共(public) setter ,这就是它无法在数据绑定(bind)期间设置的原因。公开 setter ,它的值将被正确设置:

public abstract class Entity<TId> : IEquatable<Entity<TId>>
{
public TId Id { get; set; }
}

注意:在这种情况下不需要FromBody属性,因为Customer类型的参数默认会从请求体中绑定(bind)。

关于c# - FromBody 不绑定(bind) Inherited Id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47608975/

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