2012-02-07 18 views
3

測定単位の後に関連するテキストラベルが必要な入力を持つ多くのシステムを開発しています。例えばメータースクエア、メーター立方メートル、トン、立方フィートなど。測定単位の間でスケールのような何もする必要はありません。更新が容易であり、良い方法であることを確認してください。MVC3ビューの入力後に単位を表示するにはどうすればよいでしょうか?

合理的に自動であるものを探していました。これは、測定単位を特定のプロパティにバインドします。私たちは、200以上のプロパティを持つ15の異なる単位を組み合わせた画面を持っています。

私はViewModelsとEditorテンプレートを使用しています(いくつかはドロップダウンやtexteditorforなどでハードコードされています。

他にもこの問題が発生していますか?ビューのフィールドの後のテキストをハードコードすることができます。もっと優雅なものはありますか?たぶん属性など?

誰もがこれを処理する最善の方法について考えています。

おかげ

+0

チェックアウト[測定単位変換ライブラリ](http://www.codeproject.com/Articles/23087/Measurement- Unit-Conversion-Library)をコードプロジェクト上に作成します。 –

+0

興味深いですね。それは、実際のビューで測定単位をラベリングするのに役立ちますか?私は現在実際に変換することに何の問題もない。 – GraemeMiller

答えて

1

ディスプレイテンプレートとより具体的なタイプを使用します。

たとえば、通貨を処理するために使用されるCurrencyクラスを作成します。そうすることで、それがセント、ドル、または何であれ、ユーザーが使用する通貨であるかどうかを知ることができます。

もっと仕事が必要です。しかし、このコードはより堅牢で、どのユニットを使用すべきかを容易に知ることができます。なぜミリ秒を含めることができたTimeSpanなくintを使用しているされています

など秒間

2

グレアム、あなたのViewModelで

は、次のような属性を使用してプロパティを定義することができます。私は(ポイントが不足していた場合

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

私はわかりません私はこれができました!!)、私はこのアプローチをさまざまなプロジェクトのさまざまなプロパティについてかなり広く使用しています。

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

:ドロップダウンは明らかにあなたが似ていますが、より汎用的な方法でそれらを飾るしたいと思うかもしれカントー、同じように属性を必要としないので、それらは「text」要素の「自己記述」であると考え幸運

+0

もっと自動のものを探していました。その単位は特定の特性に結びついていました。私たちは、200以上のプロパティを持つ15種類の測定単位を組み合わせた画面を持っています。 – GraemeMiller

+0

ok、gotcha。あなたの質問にこのコメントと追加情報を追加するのに役立つかもしれませんが、それは現在の要件に大きな違いをもたらします)。 –

+0

ありがとう、良い点。 – GraemeMiller

1

私の考えは現在、属性を追加することです

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

は、次に何かがいずれかHtml.UnitOfMeasureDisplayヘルパーを作成したり、自動的にそれを含めることEditorTemplatesで何かをしようとします。

関連する問題