В моем приложении много моделей, многие из которых содержат процентные данные. Они представлены как decimal
или decimal?
структуры в модели. Однако не все свойства с decimal
структурами являются процентами. Некоторые должны рассматриваться как обычные десятичные дроби.
Проценты требуют особого внимания:
- Для отображения они должны использовать формат
{0:P2}
. (У меня эта часть работает.)
- Для редактирования они должны иметь тот же формат, что и дисплей, то есть «95», «95%» или «95,00%» все привязываются к значению 0,95.
Я начал создавать PercentModelBinder
, который реализует IModelBinder
, но затем понял, что вы можете применить ModelBinderAttribute
только к классу , а не к свойству.
Как лучше всего справиться с этим случаем, когда некоторым (но не всем) типам использования требуется специальная обработка как для отображения, так и для привязки?
Каждое решение, которое мне кажется, плохо пахнет излишним, борясь с MVC. Конечно, есть лучший способ, чем:
- Создание пользовательской структуры
Percentage
и использование ее в качестве основы для IModelBinder и EditorTemplates или
- Переопределение поведения привязки по умолчанию
decimal
и decimal?
и изменение логики синтаксического анализа на основе глубоких знаний моей модели, или
- Реализация пользовательского связывателя модели для каждого класса, который содержит процентное свойство, или
- Использование поддельных свойств прокси в модели (то есть взлом MVC)