MVC3 - 3 decimal places on type double with leading zero

后端 未结 3 1636
萌比男神i
萌比男神i 2020-12-03 14:38

I have a field for weight in Kgs (type double or use something else??). In edit view I would like the user to enter numbers to the thousandth place<

相关标签:
3条回答
  • 2020-12-03 15:03

    To format the number just use

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

    or

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

    to Validate

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

    I wouldn't constrain the precision they put in, just make sure that it is a valid number using javascript. You might also constrain input to only include numbers and a period.

    If the user puts in something wrong (i.e. not compatible with a double type), MVC will complain when it tries to bind to the model.

    0 讨论(0)
  • 2020-12-03 15:05

    its very simple follow this method

    so you have to insert DataFormatString="{0:#,##0.000#Kg}" only on gridview

    0 讨论(0)
  • 2020-12-03 15:08

    You could use data annotations on your view model:

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

    and in your view

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

    will properly format the value in the input field.

    Another possibility is to write a custom editor template for the double type (~/Views/Shared/EditorTemplates/double.cshtml):

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

    and then in your view:

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

    or if you don't want to override all templates for all double types in your application you could put this into some custom template location like ~/Views/Shared/EditorTemplates/MyFormattedDouble.cshtml and then in your view:

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

    Personally I prefer the first approach which uses data annotations to control the format of the double values.

    0 讨论(0)
提交回复
热议问题