public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) { ValueProviderResult formIdResult = bindingContext.ValueProvider.GetValue("FormId"); if (formIdResult == null) return null; long formId = long.Parse(formIdResult.AttemptedValue); ValueProviderResult controlIdResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName + ".Id"); if (controlIdResult == null) return null; int controlId = int.Parse(controlIdResult.AttemptedValue); FormViewModel form; ControlViewModel model = FormControlManager.GetControl(formId, controlId, out form); if (model == null) return null; bindingContext.ModelMetadata = ModelMetadataProviders.Current.GetMetadataForType(() => model, model.GetType()); return base.BindModel(controllerContext, bindingContext); }