格式化强类型元素值

时间:2011-09-15 13:26:33

标签: asp.net-mvc

我的ViewModel中有double类型的属性,我为它创建了一个TextBox:

Html.TextBoxFor(m => m.DoubleProperty)

有没有办法格式化文本框值(例如,应用一些String.Format魔法)?

1 个答案:

答案 0 :(得分:3)

您可以使用[DisplayFormat]属性修饰视图模型属性,以便指定任何格式:

[DisplayFormat(DataFormatString = "{0:###.###}", ApplyFormatInEditMode = true)]
public double? DoubleProperty { get; set; }

并在您的视图中使用EditorFor帮助程序:

@Html.EditorFor(m => m.DoubleProperty)

另一种可能性是编写自定义编辑器模板(~/Views/Shared/EditorTemplates/MyDouble.cshtml):

@model double?
@Html.TextBox("", Model.HasValue ? Model.Value.ToString("###.###") : "")

并在您看来:

@Html.EditorFor(m => m.DoubleProperty, "MyDouble")

或者如果您不想在调用MyDouble帮助程序时明确指定EditorFor自定义编辑器模板,您还可以在视图模型上使用[UIHint]属性:

[UIHint("MyDouble")]
public double? DoubleProperty { get; set; }