MVC3 - 类型为double的3个小数位,前导零

时间:2011-09-11 01:25:38

标签: asp.net-mvc-3

我有重量以Kgs 的字段(输入double或使用别的东西?)。 在编辑视图中,我希望用户在千位中输入数字。 在显示视图中,我希望Kgs看起来像560.250

尝试学习MVC3 + Razor。 愿意探索JQuery,使用正则表达式,验证器,视图模板,查看模型......

基于约定的MVC的“魔力”需要习惯。对于使用哪种方法感到困惑。

提前感谢您的帮助。

3 个答案:

答案 0 :(得分:31)

您可以在视图模型上使用数据注释:

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

并在您的视图中

@Html.EditorFor(x => x.Weight)

将正确格式化输入字段中的值。

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

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

然后在你看来:

@Html.EditorFor(x => x.Weight)

或者,如果您不想覆盖应用中所有双重类型的所有模板,可以将其放入某个自定义模板位置,例如~/Views/Shared/EditorTemplates/MyFormattedDouble.cshtml,然后在您的视图中:

@Html.EditorFor(x => x.Weight, "MyFormattedDouble")

我个人更喜欢第一种使用数据注释来控制double值格式的方法。

答案 1 :(得分:4)

要格式化数字,请使用

 @string.Format("{0:0.00}", Model.Weight);

 @Html.DisplayFor(x => string.Format("{0:0.00}", x.Weight));
 @Html.EditorFor(x => string.Format("{0:0.00}", x.Weight));

验证

public class Model
{
    [Required]
    public double Weight{ get; set; }
}

我不会限制他们输入的精度,只需使用javascript确保它是有效数字。您也可以将输入限制为仅包含数字和句点。

如果用户输错了(即与double类型不兼容),MVC会在尝试绑定到模型时抱怨。

答案 2 :(得分:0)

非常简单 按照这种方法

所以你必须只在gridview上插入DataFormatString =“{0:#,## 0.000#Kg}”