我有重量以Kgs 的字段(输入double或使用别的东西?)。 在编辑视图中,我希望用户在千位中输入数字。 在显示视图中,我希望Kgs看起来像560.250
尝试学习MVC3 + Razor。 愿意探索JQuery,使用正则表达式,验证器,视图模板,查看模型......
基于约定的MVC的“魔力”需要习惯。对于使用哪种方法感到困惑。
提前感谢您的帮助。
答案 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}”