Разрешить ввод в текстовое поле без начального нуля - PullRequest
3 голосов
/ 17 октября 2011

У меня есть веб-приложение ASP.NET, в моей модели представления есть двойное поле PowerPrice, но проверка для поля прекращается, если пользователь не вводит начальный ноль. В проверке будет указано «пожалуйста, введите номер». Как я могу позволить пользователю вводить ".11" вместо того, чтобы требовать "0.11"? Вот мой взгляд и код модели:

<div class="editor-field">
    @Html.EditorFor(model => model.PowerPrice)
    @Html.ValidationMessageFor(model => model.PowerPrice)
</div>

public double PowerPrice
{
    get;
    set;
}

Ответы [ 2 ]

1 голос
/ 06 февраля 2012

Вы устанавливаете значение, которое имеет неправильный тип в этом случае ".11" для объекта типа Double. Это всегда будет неудачей.

У вас есть пара вариантов, которые я могу придумать, не говоря уже о моей голове.

  • Измените тип Double на String, и как только вы его получите, попробуйте разбери что хочешь. Также на интерфейсе, чтобы уменьшить то, что garbagge может быть введен с помощью валидатора регулярных выражений или пользовательского валидатора или используйте AjaxControlToolkit MaskEditor (см. http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/MaskedEdit/MaskedEdit.aspx)

Или,

  • Вы можете сохранить свой код как есть, а затем на клиенте с помощью клиентского кода, такого как JavaScript или JQuery, обнаружить, что там, так что вы сказали, что беспокоитесь только о точках, например, ".12", тогда, если вы обнаружите это Сценарий добавить ведущий ноль или число в зависимости от того, что вы хотите к нему. Это обеспечит при достижении сервером его десятичного значения и будет принято без анализа или изменения на стороне сервера.
0 голосов
/ 30 марта 2014

Я полагаю, что ответ здесь точно указывает на фактического виновника - jQuery.Validation версии до 1.10 имеют неправильное регулярное выражение проверки.Согласно последним комментариям к ответу, просто обновите (например, nuget) свой jQuery.Validation до последней версии.

В моем случае, обновление с 1.9.0.1 до 1.11.1 добилось цели.Никаких изменений на стороне сервера / связывателя модели / строки ViewModel не требуется.

...