public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var valueProviderResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
if (valueProviderResult != null)
{
// Primeira requisição-filha
if (controllerContext.IsChildAction && valueProviderResult.RawValue != null && valueProviderResult.RawValue.GetType() != typeof(string))
{
return valueProviderResult.RawValue;
}
// Segunda requisição-filha
if (!controllerContext.IsChildAction && IsXtraReportRequest(bindingContext))
{
if (bindingContext.ModelType == typeof(DateTime) || bindingContext.ModelType == typeof(DateTime?))
return DateTime.Parse(valueProviderResult.AttemptedValue, valueProviderResult.Culture);
else if (bindingContext.ModelType == typeof(decimal) || bindingContext.ModelType == typeof(decimal?))
return decimal.Parse(valueProviderResult.AttemptedValue, valueProviderResult.Culture);
else if (bindingContext.ModelType == typeof(float) || bindingContext.ModelType == typeof(float?))
return float.Parse(valueProviderResult.AttemptedValue, valueProviderResult.Culture);
else if (bindingContext.ModelType == typeof(double) || bindingContext.ModelType == typeof(double?))
return double.Parse(valueProviderResult.AttemptedValue, valueProviderResult.Culture);
}
}
return base.BindModel(controllerContext, bindingContext);
}