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