Moja aplikacja ma wiele modeli, z których wiele zawiera dane procentowe. Są one reprezentowane w modelu jako konstrukcje decimal
lub decimal?
. Jednak nie wszystkie właściwości o strukturach decimal
są procentami. Niektóre powinny być traktowane jak zwykłe znaki dziesiętne.Wartości procentowe w MVC 3
Procenty wymagają szczególnej uwagi:
- Na wyświetlaczu powinny używać formatu
{0:P2}
. (Mam tę część działa.) - Do edycji, powinny one pozwolić na taki sam format jak wyświetlacz, tj. "95" lub "95%" lub "95,00%" wszystkie wiążą się z wartością 0,95.
zacząłem dół drogi tworzenia PercentModelBinder
który implementuje IModelBinder
, ale potem zrozumiałem, że można zastosować tylko ModelBinderAttribute
się do klasę, a nie materialnych.
Jaki jest najlepszy sposób na obsłużenie tego przypadku, w którym niektóre zastosowania typu wymagają specjalnej obsługi zarówno do wyświetlania, jak i wiązania?
Każde rozwiązanie, o którym myślę, że źle pachnie przesadą, walczy z ramami MVC. Z pewnością nie jest to lepszy sposób niż:
- Tworzenie niestandardowego
Percentage
struct i używając go jako podstawa do IModelBinder i EditorTemplates lub - reimplementing zachowanie
decimal
idecimal?
wiązania domyślne i zmieniającym logikę parsowania opartej na intymnej znajomości mojego modelu lub - Realizacja spinacza modelu niestandardowych dla każdej klasy, która zawiera właściwość procentowe lub
- Korzystanie fałszywe właściwości proxy w modelu (tj zerwania MVC)
Myślę, że rozważyłbym napisanie niestandardowego atrybutu adnotacji danych, gdybym był tobą. Jeśli to jest coś, co w ogóle znasz, weź to i biegnij z tym. Jeśli nie, komentarz z powrotem, a ja wstawię dla ciebie kilka informacji. –
@ Rick, byłbym bardzo zainteresowany widząc twoją implementację. –
Zdobędę kilka linków i przykładowy kod razem jutro w biurze i zamieszczę je tutaj. –