【发布时间】:2015-08-18 20:16:14
【问题描述】:
我正在尝试使用 NancyFx 实现一种部分更新。
我有一个名为 Resource 的类,如下所示:
public class Resource
{
public int Id { get; set; }
public decimal SomeValue { get; set; }
public bool Enabled { get; set; }
public DateTime CreationDate { get; set; }
}
我当前的资源实例包含以下值:
{
"Id" : 123,
"SomeValue" : 6,
"Enabled" : true,
"CreationDate" : "2015-08-01T13:00:00"
}
我希望我的 PUT 方法接收一个仅代表 Resource 的一些属性的 JSON,例如:
{
"Id": 123,
"SomeValue" : 54.34
}
然后,我会做一个BindTo(myCurrentResourceInstance),结果是:
{
"Id" : 123,
"SomeValue" : 54.34,
"Enabled" : true,
"CreationDate" : "2015-08-01T13:00:00"
}
但是,我得到了这个:
{
"Id" : 123,
"SomeValue" : 54.34,
"Enabled" : false,
"CreationDate" : "0001-01-01T00:00:00"
}
JSON 中包含的属性会正确覆盖当前实例中的属性,但 BindTo() 方法也会更改我未在 JSON 中指定的属性。我只想覆盖 JSON 中指定的属性;其他的应该保持不变。
BindTo() 接收 BindingConfig 作为参数,该参数具有 Overwrite 属性 (https://github.com/NancyFx/Nancy/wiki/Model-binding)。当该属性为真时,它会导致BindTo() 覆盖所有属性;如果为 false,则不会覆盖任何内容。
有什么方法可以实现我想要的吗?
谢谢
【问题讨论】: