如何在WCF中从响应中删除空的DataMember属性

14

我正在使用WCF Web服务将XML输出返回给浏览器。如果DataContract的某个属性为null,则它仍会作为空值出现在响应中。

<Id i:nil="true" />

有没有办法让它在响应中完全不返回?

2个回答

25

我自己解决了,我需要在我的 DataMembers 中添加以下属性

[DataMember(EmitDefaultValue = false)]

2
这对我来说似乎不起作用...还有其他什么我应该添加的吗? - Daniel Dolz
3
有没有一种方法可以将其指定为默认行为?这似乎是微软的一个可怕的疏忽。例如,注释包含100多个POCO的类库的每个属性,这是完全不可接受的。 - crush
1
@Crush:我同意。有没有全局解决方案,而不是按属性来解决? - goku_da_master

0
在包含您的属性的类中,应该有一个构造函数。在构造函数中将其初始化为null。如果DataContract的属性为null,则它不会出现在xml输出中。如果您希望当数据存在时在输出中显示它,请在暴露数据的类中再次实例化它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接