2014-02-04 3 views
0

У меня есть настраиваемое связующее устройство, которое работает так, как я этого хочу.Как изменить КОГДА внедрено пользовательское связывание модели

ModelBinders.Binders.DefaultBinder = new CustomModelBinder(); 

Проблема заключается в том, что я только хочу, чтобы реализовать его на основе потребностей и не хочу, чтобы отменить модели по умолчанию Связывателя.

Одна часть исследования показала идею добавления указанного ключа типа, на который можно направлять, когда выполняется переплетное устройство (см. Ниже).

ModelBinders.Binders.Add(typeof(List), new CustomModelBinder()); 

К сожалению, это не похоже на работу для меня, если я не установить DefaultBinder моему CustomModelBinder.

Возможно ли сохранить связующее устройство по умолчанию?

ответ

1

Вам не нужно устанавливать определенное пользовательское связующее устройство по всему миру. Вы можете установить его для метода действия:

public ActionResult SomeAction([ModelBinder(typeof(CustomModelBinder))]SomeModel m){ 
    //... 
} 

Он будет применяться только в вышеуказанном сценарии. В любом другом методе Action с использованием привязки к SomeModel, но без атрибута ModelBinder он будет использовать стандартное связующее.

+0

Спасибо за ваш ответ. К сожалению, когда я пытаюсь это сделать, мой CustomModelBinder по-прежнему не вызывается, если я не переопределяю глобальную модель ModelBinder по умолчанию. – D1v3

+0

Похоже, я нашел проблему! Было еще несколько свойств, необходимых мне для привязки внутри скрытых элементов, чтобы заставить его работать. Это был мой беспорядок. Ваше решение было именно тем, что мне было нужно, еще раз спасибо! – D1v3

Смежные вопросы