Brato.UserInterface.WebUserInterfaceHelper.XtraReportsModelBinder.BindModel C# (CSharp) Method

BindModel() public method

public BindModel ( ControllerContext controllerContext, System.Web.Mvc.ModelBindingContext bindingContext ) : object
controllerContext ControllerContext
bindingContext System.Web.Mvc.ModelBindingContext
return object
        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);
        }