简体   繁体   中英

WebApi c# rest web service can't pass list of object

I'm building a simple rest full web service to storage data into database.

So this is my code:

[Route("InsertActivities")]
[HttpPost]
public HttpResponseMessage InsertActivities(ActivityExecutionDTO u)
{
    try
    {
        if (u != null)
        {
            //TO DO
        }

    }
    catch (Exception e)
    {

    }
}

This is ActivityExecutionDTO class:

namespace WebService.Models
{
    [DataContract(Name = "ActivityExecutionDTO")]
    public class ActivityExecutionDTO
    {
        [DataMember(Name = "Username", Order = 1)]
        public string UserName { get; set; }
        [DataMember(Name = "Password", Order = 2)]
        public string Password { get; set; }
        [DataMember(Name = "IdClinicalDocument", Order = 3)]
        public int IdClinicalDocument { get; set; }
        [DataMember(Name = "ActivityDetails", Order = 4)]
        public IQueryable<ActivityExecutionDetailDTO> ActivityDetails { get; set; }
    }
}

ActivityExecutionDetailDTO class:

namespace WebService.Models
{
    [DataContract]
    public class ActivityExecutionDetailDTO
    {
        [DataMember(Name = "Id")]
        public int ID { get; set; }
        [DataMember(Name = "IdClinicalDocument"), IgnoreDataMember]
        public int IdClinicalDocument { get; set; }
        [DataMember(Name ="IdActivity")]
        public int IdActivity { get; set; }
        [DataMember(Name = "DateExecution"), IgnoreDataMember]
        public DateTime? DateExecution { get; set; }
        [DataMember(Name = "Duration")]
        public Int32? Duration { get; set; }
        [DataMember(Name = "CalBurned")]
        public Int32? CalBurned { get; set; }
        [DataMember(Name = "Steps")]
        public Int32? Steps { get; set; }
    }
}

So this is the JSON that I pass throught PostMan client:

{
    "Username" : "t.g",
    "Password" : "t",
    "IdClinicalDocument" : 63,
    "ActivityDetails" :
    [
        {
            "Id" : 1,
            "IdClinicalDocument" : 63,
            "IdActivity" : 1,
            "DateExecution" : null,
            "Duration" :  150,
            "CalBurned" : 9600,
            "Steps" :  150
        }
    ]
}

So if I try to inspect my code this code:

u.ActivityDetails

is every times null.

The list of activities is null. Where is the error?

change IQueryable<ActivityExecutionDetailDTO> to ICollection<ActivityExecutionDetailDTO>

IQueryable stores a query definition only, no data could be in it, but ICollection instead.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM