HTML.EditorFor с 3 знаками после запятой

Как отобразить десятичное поле модели с 3 знаками после запятой. В настоящее время он сокращает его до 2 цифр.

1,237 в настоящее время будет отображаться как 1,24 ;)


person Jannik    schedule 26.04.2013    source источник


Ответы (1)


Вы можете использовать аннотации данных в своей модели представления, например:

[DisplayFormat(DataFormatString = "{0:0.00}", ApplyFormatInEditMode = true)]
public decimal Num { get; set; }
person Artless    schedule 26.04.2013
comment
Есть ли способ сделать это без изменения модели? - person Jannik; 26.04.2013
comment
Вы не должны использовать свою модель в представлении. Вместо этого вы должны использовать ViewModels. - person Artless; 26.04.2013
comment
Итак, я должен написать ViewModel, даже если мне нужны именно те вещи, которые я получаю от самой модели? Как это должно выглядеть? Я хочу опубликовать все данные модели, которые я получаю из представления, в БД и не хочу снова копировать все поля в модель... - person Jannik; 26.04.2013
comment
Да, это был бы правильный способ сделать это. Ваша модель принадлежит бизнес-логике вашего приложения, а не пользовательскому интерфейсу. Допустим, завтра вы решите сделать мобильное приложение, которое будет взаимодействовать с вашим BL через WebAPI. Будут применяться разные правила пользовательского интерфейса, и ни одно из них не имеет отношения к вашим фактическим данным. В своем вопросе вы хотите изменить отображение некоторого свойства, а не ваши фактические данные. Ваша Модель не должна знать об этом. Вот тут-то и появляются виртуальные машины. - person Artless; 26.04.2013
comment
Как должна выглядеть моя модель представления, чтобы мне не приходилось вставлять данные в модель бизнес-логики? Сработает ли получение его из обычной модели или что-то в этом роде? - person Jannik; 26.04.2013
comment
Что ж, вы можете попробовать Auto Mapper. Хотя, если честно, назначение значений VM -> Model не так уж и плохо. - person Artless; 26.04.2013