ASP.NET MVC – смешивание пользовательской и стандартной привязки модели

У меня есть тип:

public class IssueForm { Order Order {get; set;} Item Item {get; set;} Range Range {get; set;} } 

Я создал настраиваемое связующее устройство из-за требований к Order и Item, но Range все еще может использовать Binder Default Model Binder.

Есть ли способ из моего настраиваемого связующего объекта вызвать функцию привязки модели по умолчанию для возврата объекта Range? Думаю, мне просто нужно правильно настроить ModelBindingContext, но я не знаю, как это сделать.


РЕДАКТИРОВАТЬ

Глядя на первый комментарий и ответ – кажется, что наследование от стандартного связующего будет полезным.

Чтобы добавить дополнительные особенности для моей настройки, я имею:

 public IssueFormModelBinder : IModelBinder { public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) { Order = //code to pull the OrderNumber from the context and create an Order Item = //code to pull the ItemNumber from the context and create an Item IssueForm form = IssueFormFactory.Create(Order, Item); form.Range = // ** I'd like to replace my code with a call to the default binder ** return form } } 

Это может быть глупым способом сделать это … это мое первое связующее устройство. Просто указывая на мою текущую реализацию.


EDIT # 2

Поэтому ответы на переопределение BindProperty будут работать, если я смогу подключиться, как метод «Я все сделаю привязку», и вызову метод Factory со свойствами.

Думаю, я действительно должен посмотреть на реализацию DefaultModelBinder и перестать быть глупым.

    Попробуйте что-то вроде этого:

     public class CustomModelBinder : DefaultModelBinder { protected override void BindProperty(ControllerContext controllerContext, ModelBindingContext bindingContext, PropertyDescriptor propertyDescriptor) { if(propertyDescriptor.Name == "Order") { ... return; } if(propertyDescriptor.Name == "Item") { ... return; } base.BindProperty(controllerContext, bindingContext, propertyDescriptor); } } 

    переопределить BindProperty из DefaultModelBinder:

     public class CustomModelBinder:DefaultModelBinder { protected override void BindProperty( ControllerContext controllerContext, ModelBindingContext bindingContext, System.ComponentModel.PropertyDescriptor propertyDescriptor ) { if (propertyDescriptor.PropertyType == typeof(Range)) { base.BindProperty(controllerContext, bindingContext, propertyDescriptor); } // bind the other properties here } } 

    Я думаю, что я бы зарегистрировал два разных пользовательских привязки модели: один для Order и один для Item, и пусть связующее устройство по умолчанию обрабатывает Range и IssueForm.

    Interesting Posts

    Как сделать нижний колонтитул фиксированным в нижней части страницы

    Установите определенные порты USB только для перезагрузки

    Почему у меня нет значка Get Windows 10?

    Как вертикально центрировать изображение внутри div

    Как избежать утечек памяти при использовании вектора указателей на динамически выделенные объекты в C ++?

    Как измерить общее использование ОЗУ в программе под Windows?

    Система координат OpenGL левая или правая?

    Как получить ответ JSON в Голанге

    Навсегда удалить / отключить сенсорную клавиатуру в панели задач Windows 8?

    Как исправить двойные кодированные символы UTF8 (в таблице utf-8)

    Как установить стрелку вниз в spinner?

    Может ли Json.NET сериализовать / десериализовать в / из streamа?

    Идентификационные данные пользователя MVC 5 Access Identity

    Как предотвратить множественные переполнения тоста

    Как указать несколько целей в моем подкоде для моего проекта Xcode?

    Давайте будем гением компьютера.