MVC3 - 3 десятичных знака по типу double с ведущим нулем - PullRequest
14 голосов
/ 11 сентября 2011

У меня есть поле для веса в килограммах (введите double или используйте что-нибудь еще ??).В режиме редактирования я бы хотел, чтобы пользователь вводил цифры на тысячное место .В режиме просмотра я хотел бы, чтобы килограммы выглядели как 560.250

Попытка изучить MVC3 + Razor.Готов исследовать JQuery, использовать регулярные выражения, валидаторы, шаблоны представлений, модели представлений ...

"Магия" MVC, основанная на соглашениях, требует привыкания.Запутался, какой подход использовать.

Заранее благодарю за помощь.

Ответы [ 3 ]

31 голосов
/ 12 сентября 2011

Вы можете использовать аннотации данных для вашей модели представления:

[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")

Лично я предпочитаю первый подход, который использует аннотации данныхконтролировать формат двойных значений.

4 голосов
/ 11 сентября 2011

Для форматирования числа просто используйте

 @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 будет жаловаться, когда он пытается привязаться к модели.

0 голосов
/ 09 апреля 2013

очень просто, следуйте этому методу

, поэтому вы должны вставить DataFormatString = "{0: #, ## 0.000 # Kg}" только в gridview

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...