1

I encountered a nullable property issue in my C# webservice project.

public class Header
{
    [DataMember]
    public long Id { get; set; }
    [DataMember]
    public long SportId { get; set; }
    [DataMember]
    public long TournamentId { get; set; }
    [DataMember]
    public string TournamentName { get; set; }
    [DataMember]
    public string TournamentShortName { get; set; }
    [DataMember]
    public long StatusId { get; set; }
    [DataMember]
    public string StatusName { get; set; }
    [DataMember]
    public string StatusShortName { get; set; }
    [DataMember]
    public DateTime MatchDate { get; set; }
    [DataMember]
    public string MatchTime { get; set; }
    [DataMember]
    public DateTime? PeriodStartDate { get; set; }   

    [DataMember]
    public int? Quarter1HomeTeamScore { get; set; }
    [DataMember]
    public int? Quarter1AwayTeamScore { get; set; }
    [DataMember]
    public int Quarter2HomeTeamScore { get; set; }
    [DataMember]
    public int Quarter2AwayTeamScore { get; set; }
    [DataMember]
    public int Quarter3HomeTeamScore { get; set; }
    [DataMember]
    public int Quarter3AwayTeamScore { get; set; }
    [DataMember]
    public int Quarter4HomeTeamScore { get; set; }
    [DataMember]
    public int Quarter4AwayTeamScore { get; set; }

}

This is the soap xml after serialization:

<LiveMatchList>
<Items>
    <ListMatch>
        <Header>
        <Quarter1HomeTeamScore xsi:nil="true"/>
        <Quarter1AwayTeamScore xsi:nil="true"/>
        <Quarter2HomeTeamScore xsi:nil="true"/>
        <Quarter2AwayTeamScore xsi:nil="true"/>
        <Quarter3HomeTeamScore xsi:nil="true"/>
        <Quarter3AwayTeamScore xsi:nil="true"/>
        <Quarter4HomeTeamScore xsi:nil="true"/>
        <Quarter4AwayTeamScore xsi:nil="true"/>
        <Id>138906</Id>
        <SportId>2</SportId>
        <TournamentId>8</TournamentId>
        <TournamentName> Eurocup</TournamentName>
        <TournamentShortName> AVK</TournamentShortName>
        <StatusId>12</StatusId>
        <StatusName> 1. Periyot</StatusName>
        <StatusShortName> 1.P</StatusShortName>
        <MatchDate>2013-03-20T00:00:00</MatchDate>
        <MatchTime> 21:30</MatchTime>
        <PeriodStartDate xsi:nil="true"/>           
    </Header>
</ListMatch>

I tried to view the xml in http://www.xmlgrid.net/ but could not view it because of xsi:nil = "true" nodes. And in another project, which uses this webservice, I have wrong xml format error while deserializing to object.

How can I ignore null property? Or is there another way around this issue?

i tried :

[DataMember(EmitDefaultValue = false)]
public int? Quarter1HomeTeamScore { get; set; }

and

[DataMember(EmitDefaultValue = false)]
public int Quarter1HomeTeamScore = 0
James A Mohler
  • 11,060
  • 15
  • 46
  • 72
erkan demir
  • 1,386
  • 4
  • 20
  • 38
  • possible duplicate of [Representing Null values differently when serializing objects to XML](http://stackoverflow.com/questions/11362313/representing-null-values-differently-when-serializing-objects-to-xml) – JMK Mar 21 '13 at 13:47

1 Answers1

1

Add EmitDefaultValue attribute like this:

[DataMember(EmitDefaultValue = false)]

UPDATE

Try IsRequired attribute like

 [DataMember(IsRequired = false)]

And as you commented it is not working for you, check this out

How to remove null DataMember properties from the response in wcf

Community
  • 1
  • 1
CodeGuru
  • 2,722
  • 6
  • 36
  • 52