在MVC3视图中输入后显示度量单位的好方法是什么?

时间:2012-02-07 09:30:08

标签: asp.net-mvc asp.net-mvc-3

我们开发了许多系统,这些系统的输入应该有一个相关的文本标签后面的度量单位。例如米方,米立方,吨,立方等。我不需要做任何聪明的事情,比如测量单位之间的比例。只需确保它易于更新和良好实践。

正在寻找合理自动化的东西。这将计量单位与特定财产联系起来。我们的屏幕将15种不同的度量单位与200多种属性相结合

我使用ViewModels和Editor模板(虽然有些东西被硬编码为下拉或texteditor等,所以我可以添加类)。

是否有其他人遇到此问题?我可以在视图中的字段后对文本进行硬编码。还有什么更优雅的吗?也许属性等?

任何人都对处理此问题的最佳方法有任何想法。

由于

3 个答案:

答案 0 :(得分:2)

格雷姆,

在ViewModel中,您可以使用以下属性定义属性:

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

我不确定我是否错过了这一点(我可以!!),但我在各种项目的各种属性上使用这种方法相当广泛。显然,下拉菜单在“text”元素中会“自我描述”,因此不需要以相同的方式使用属性,因此您可能希望以类似但更通用的方式装饰它们:

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

答案 1 :(得分:1)

我的想法是添加一个属性,例如

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

然后做一些事情要么创建一个Html.UnitOfMeasureDisplay助手,要么尝试用EditorTemplates做一些事情来自动包含它。

答案 2 :(得分:1)

使用显示模板和更具体的类型。

例如,创建用于处理货币的Currency类。通过这样做,你知道它是美分,美元或其他什么以及用户使用的货币。

更多工作,当然。但是代码更健壮,更容易分辨出应该使用哪个单元。

这就是为什么使用TimeSpan而不是int可能包含毫秒,秒等的原因。