Пример #1
0
        public void CastOrDefault_CorrectType_ReturnsInput()
        {
            // Act
            int retVal = ModelBinderUtil.CastOrDefault <int>(42);

            // Assert
            Assert.Equal(42, retVal);
        }
Пример #2
0
        public void CastOrDefault_IncorrectType_ReturnsDefaultTModel()
        {
            // Act
            DateTime retVal = ModelBinderUtil.CastOrDefault <DateTime>(42);

            // Assert
            Assert.Equal(default(DateTime), retVal);
        }
Пример #3
0
        public static bool TryBindStrongModel <TModel>(ModelBindingExecutionContext modelBindingExecutionContext, ModelBindingContext parentBindingContext, string propertyName, ModelMetadataProvider metadataProvider, out TModel model)
        {
            ModelBindingContext propertyBindingContext = new ModelBindingContext(parentBindingContext)
            {
                ModelMetadata = metadataProvider.GetMetadataForType(null, typeof(TModel)),
                ModelName     = ModelBinderUtil.CreatePropertyModelName(parentBindingContext.ModelName, propertyName)
            };

            IModelBinder binder = parentBindingContext.ModelBinderProviders.GetBinder(modelBindingExecutionContext, propertyBindingContext);

            if (binder != null)
            {
                if (binder.BindModel(modelBindingExecutionContext, propertyBindingContext))
                {
                    object untypedModel = propertyBindingContext.Model;
                    model = ModelBinderUtil.CastOrDefault <TModel>(untypedModel);
                    parentBindingContext.ValidationNode.ChildNodes.Add(propertyBindingContext.ValidationNode);
                    return(true);
                }
            }

            model = default(TModel);
            return(false);
        }