MVC3 - 3 десятичных разряда по типу double с ведущим нулем
У меня есть поле для веса в Kgs (введите double или используйте что-то еще?).
В режиме редактирования я хотел бы, чтобы пользователь вводил числа в тысячное место.
В режиме просмотра я хотел бы, чтобы Kgs отображались как 560.250
Попытка изучить MVC3 + Razor.
Желая изучить JQuery, использовать регулярные выражения, валидаторы, шаблоны представлений, модели просмотра...
"Магия" MVC, основанная на соглашениях, начинает привыкать. Смутно, какой подход к использованию.
Заранее благодарим вас за помощь.
Ответы
Ответ 1
Вы можете использовать аннотации данных в своей модели просмотра:
[DisplayFormat(DataFormatString = "{0:#,##0.000#}", ApplyFormatInEditMode = true)]
public double? Weight { get; set; }
и на ваш взгляд
@Html.EditorFor(x => x.Weight)
будет правильно форматировать значение в поле ввода.
Другая возможность - написать шаблон настраиваемого редактора для двойного типа (~/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")
Лично я предпочитаю первый подход, который использует аннотации данных для управления форматом двойных значений.
Ответ 2
Чтобы отформатировать номер, просто используйте
@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. Вы также можете ограничить ввод только номерами и периодом.
Если пользователь помещает что-то не так (то есть не совместимо с двойным типом), MVC будет жаловаться, когда он пытается привязать к модели.
Ответ 3
его очень простая
следуйте этому методу
поэтому вам нужно вставить DataFormatString = "{0: #, ## 0.000 # Kg}" только в gridview