Процентные свойства в MVC 3

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

Проценты требуют особого внимания:

  • Для отображения они должны использовать формат {0: P2} . (У меня эта часть работает.)
  • Для редактирования они должны поддерживать тот же формат, что и дисплей, то есть «95», «95%» или «95,00%» все привязаны к значению 0,95.

I приступили к созданию PercentModelBinder , реализующего IModelBinder , но затем поняли, что вы можете применить только ModelBinderAttribute к классу , не свойство.

Как лучше всего справиться с ситуацией, когда некоторые (но не все) использования типа требуют особой обработки как для отображения, так и для привязки?

Каждое решение, которое я думаю, пахнет плохо излишне, борясь с фреймворком MVC. Конечно, есть лучший способ, чем:

  • Создание пользовательской структуры Percentage и использование ее в качестве основы для IModelBinder и EditorTemplates, или
  • Повторная реализация поведения привязки по умолчанию для decimal и decimal? и изменение логики синтаксического анализа на основе глубокого знания моей модели, или
  • Реализация настраиваемого связывателя модели для каждого класса, который содержит процентное свойство, или
  • Использование поддельных свойств прокси в модель (т.е. нарушение MVC)
9
задан easwee 6 January 2015 в 11:53
поделиться