public void Execute()
 {
     if (!SkipRegisterExtendedTypesRegistry && !(dependencyResolver.IsRegistered(typeof(IExtendedTypesRegistry))))
     {
         dependencyResolver.RegisterSingleton <IExtendedTypesRegistry, ExtendedTypesRegistry>();
     }
     if (!SkipRegisterModelMetadataProvider && !(dependencyResolver.IsRegistered(typeof(ModelMetadataProvider))))
     {
         dependencyResolver.RegisterSingleton <ModelMetadataProvider, ExtraModelMetadataProvider>();
     }
 }
Beispiel #2
0
        protected virtual void SetEntityModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
        {
            var modelType = bindingContext.ModelType;

            if (typeof(IBaseEntity).IsAssignableFrom(modelType) && !(bindingContext.Model is IBaseEntity)) //already set?
            {
                //if we somehow already have the entity in the routedata (eg. Html.Action)
                var rawValue = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
                if (rawValue != null && rawValue is IBaseEntity)
                {
                    return;
                }

                var modelName = (bindingContext.ModelName == "entity") ? null : bindingContext.ModelName;
                var valueName = CreateSubPropertyName(modelName, "Id");

                ValueProviderResult value = bindingContext.ValueProvider.GetValue(valueName);
                if (value != null)
                {
                    var    toProp  = modelType.GetProperty("Id");
                    object pkValue = value.ConvertTo(toProp.PropertyType);
                    if (pkValue != null)
                    {
                        //we have a primary key value, let's get the service
                        var serviceType = typeof(IModelService <>).MakeGenericType(modelType);
                        if (dependencyResolver.IsRegistered(serviceType))
                        {
                            var service = dependencyResolver.Resolve(serviceType) as IModelService;
                            if (service != null)
                            {
                                bindingContext.ModelMetadata.Model = service.Get(pkValue);
                            }
                        }
                    }
                }
            }
        }