public async Task BindModelAsync(ModelBindingContext bindingContext)
    {
        // Read Cat from Body
        var memoryStream = new MemoryStream();
        var body         = bindingContext.HttpContext.Request.Body;
        var reader       = new StreamReader(body, Encoding.UTF8);
        var text         = reader.ReadToEnd();
        var cat          = JsonConvert.DeserializeObject <Cat>(text);
        // Read Adoption Request from query or route
        var adoptionRequest = new AdoptionRequest();
        var properties      = typeof(AdoptionRequest).GetProperties();

        foreach (var property in properties)
        {
            var valueProvider = bindingContext.ValueProvider.GetValue(property.Name);
            if (valueProvider != null)
            {
                property.SetValue(adoptionRequest, valueProvider.FirstValue);
            }
        }
        // Merge
        var model = new CatAdoptionRequest()
        {
            Cat             = cat,
            AdoptionRequest = adoptionRequest
        };

        bindingContext.Result = ModelBindingResult.Success(model);
        return;
    }
示例#2
0
 public bool Post([CustomizeValidator] CatAdoptionRequest adoptionRequest)
 {
     return(ModelState.IsValid);
 }