После игры с Asp.Net MVC в течение некоторого времени я решил фактически использовать ее в проекте. Одна из проблем, которые возникли, заключается в том, что на интерфейсном сайте могут быть разные правила валидации для данной модели, чем панель администратора.ModelMetadataProvider переопределяет альтернативу MetadataTypeAttribute
Я знаю свойство MetadataType, но поскольку у вас есть несколько контекстов, это не сработает для нас из коробки.
Для решения этой проблемы я внедрил пользовательский ModelMetadataProvider, который перенаправляет по умолчанию ModelMetdataProvider на другой тип, основанный на контексте выполнения запроса. Это очень хорошо подходит для отображения необходимого интерфейса.
Часть этого решения мне не нравится, так что я закончил чтение стека из своего поставщика метаданных собственной модели, чтобы определить, является ли данный вызов привязкой к модели. Это связано с тем, что когда я этого не делал, я бы правильно понял, что «Object не соответствует типу цели» во время вызова TryUpdateModel из контроллера, поскольку связующее устройство модели пыталось использовать свойства типа A для установки значений экземпляру типа B
Является ли чтение стопки вызовов такой плохой идеей для производства? Есть ли способ выборочно копировать поведение MetadataTypeAttribute без использования атрибутов?
Спасибо заранее,
Джон