I have this angular JS controller where I am serialising a view model to json which doesnt deserialise on the backend with a web api.

Here is my angular controller constructor..

```
constructor($scope, $http, $routeParams: IBookingParams) {

        this.http = $http;

        //get parameters from Recommendation page
        this.bookingView = <IBookingViewModel>{};
        this.bookingView.CampaignName = $routeParams.CampaignName;
        this.bookingView.CampaignSupplierId = $routeParams.CampaignSupplierId;
        this.bookingView.SupplierName = $routeParams.SupplierName;
        this.bookingView.MediaChannelNames = $routeParams.MediaChannelNames;
        this.bookingView.MediaChannelIds = $routeParams.MediaChannelIds;                    

        let livedate = this.GetJSDate($routeParams.LiveDate);
        let liveDateTime = this.GetDateTime(livedate);

        this.bookingView.LiveDate = liveDateTime;
        //populate the rest of our model 
        this.bookingView.Action = "from angular";

        var model = this.bookingView;
        let json = JSON.stringify(model);               

        this.http({
            url: "/api/asdabooking",
            method: "POST",
            data: json
        })
            .then((response: any) => {
                let test = "";
            })
            .catch((data: any) => {
                let test = "";
            });
    }

```

Here is my web api 

```
[HttpPost]
    [Route("api/asdabooking")]
    public async Task<IActionResult> BuildBookingModel([FromBody]BookingViewModel model)
    {
        try
        {
            //model is null??!!
            return Ok("");
        }
        catch (Exception ex)
        {
            base.Logger.LogError(ex.Message, ex);
            return BadRequest(ex.Message);
        }
    }

```

This is pretty bizarre, the bookingView view model on the front end matches the fields on the backend view model "BookingViewModel. I have inspected the json and all looks ok.

This is my view model 

```
public class BookingViewModel
{
    public string CampaignName { get; set; }
    public string CampaignSupplierId { get; set; }
    public string SupplierName { get; set; }
    public List<string> MediaIds { get; set; }
    public List<string> MediaChannelNames { get; set; }
    public List<MediaChannelViewModel> MediaChannels { get; set; }
    public string Action { get; set; }
    public DateTime LiveDate { get; set; }
    public List<int> MediaChannelIds { get; set; }
    public int SupplierId { get; set; }     
    public bool SuccessfulSave { get; set; }
    /// <summary>
    /// Track which tab is updating
    /// </summary>
    public string TabAction { get; set; }
    /// <summary>
    /// Price summary - list of media channels (tabs)
    /// </summary>
    public List<MediaSummaryViewModel> MediaSummaries { get; set; }

    public string UserMessage { get; set; }

}

```

This is my json 

[![enter image description here](https://i.stack.imgur.com/3OWzE.png)](https://i.stack.imgur.com/3OWzE.png)