Как правильно отобразить единицу измерения после входных данных в представлениях MVC3? - PullRequest
3 голосов
/ 07 февраля 2012

Мы разрабатываем много систем, у которых есть ввод, который должен иметь связанную текстовую метку после них для единицы измерения.например, квадратный метр, кубический метр, тонны, кубический фут и т. д. Мне не нужно делать ничего умного, например, шкалу между единицами измерения.Просто убедитесь, что это легко обновить и хорошая практика.

Искал что-то, что является достаточно автоматическим.Это связывает единицу измерения с конкретным свойством.У нас есть экраны, которые смешивают 15 различных единиц измерения с более чем 200 свойствами

Я использую шаблоны ViewModels и Editor (хотя некоторые вещи жестко закодированы как выпадающие списки или texteditorfor и т. Д., Чтобы я мог добавить классы).

Другие люди сталкиваются с этой проблемой?Я мог бы просто жестко закодировать текст после поля в представлении.Есть ли что-нибудь более изящное?Может быть, атрибут и т.д.?

У кого-нибудь есть мысли о том, как лучше всего с этим справиться.

Спасибо

Ответы [ 3 ]

2 голосов
/ 07 февраля 2012

Graeme,

В вашей ViewModel вы можете определить свое свойство с помощью атрибута следующим образом:

[Display(Name = "Unit - Meter square")]
public double Unit{ get; set; }

Я не уверен, что мне не хватает точки (которую яможет быть !!), но я использую этот подход довольно широко на различных свойствах в различных проектах.Раскрывающиеся списки, очевидно, будут «самоописательными» в их элементе «текст» и, следовательно, не будут нуждаться в атрибуте таким же образом, хотя вы можете захотеть оформить их аналогичным, но более общим способом:

[Display(Name = "Unit of measure")]
public double Unit{ get; set; }

удачи

1 голос
/ 07 февраля 2012

Используйте шаблоны отображения и более конкретные типы.

Например, создайте класс Currency, который используется для обработки валют.Делая это, вы знаете, если это центы, доллары или что-то и какую валюту использует пользователь.

Больше работы, конечно.Но код более надежен, и легче определить, какую единицу следует использовать.

Именно поэтому используется TimeSpan, а не int, который может содержать миллисекунды, секунды и т. Д.

1 голос
/ 07 февраля 2012

Сейчас я думаю добавить атрибут, например,

[Unit(UnitOfMeasure.Mph)]
[Display(Name="Top Speed"]
public float TopSpeed {get;set}

Затем сделайте что-нибудь, либо создайте помощник Html.UnitOfMeasureDisplay, либо попробуйте что-нибудь сделать с EditorTemplates, чтобы автоматически включить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...