我想用NancyFx实现一种部分更新。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方法只接收代表某些一个JSON Resource
的性质,例如:
{
"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)。当此属性为true时,将导致BindTo()
覆盖所有属性;当它是错误的,没有被覆盖。
有什么方法可以完成我想要的吗?
感谢
我想保留在我的实例中的值,而不是使用默认值。当我调用BindTo(myCurrentResourceInstance)时,myCurrentResourceInstance已经有一些值。我只想覆盖JSON中存在的那些。 – peflorencio
https://github.com/NancyFx/Nancy/issues/822 - 这是我的问题,但使用BindingConfig的解决方案不足以解决它。bennidhamma解释了为什么提供的解决方案不能解决问题 – peflorencio
嗨,我已经添加了一个新的解决方案。看看它是否有帮助。 – Xiaoy312