Проверка asp.net, чтобы убедиться, что текстовое поле имеет целочисленные значения - PullRequest
52 голосов
/ 15 сентября 2009

У меня есть необходимые настройки проверки в текстовом поле, но я также должен убедиться, что это целое число.

Как я могу это сделать?

Ответы [ 10 ]

112 голосов
/ 15 сентября 2009

Если все, что вас беспокоит, это то, что поле содержит целое число (т. Е. Не относится к диапазону), то добавьте CompareValidator с его Operator свойство установлено на DataTypeCheck:

<asp:CompareValidator runat="server" Operator="DataTypeCheck" Type="Integer" 
 ControlToValidate="ValueTextBox" ErrorMessage="Value must be a whole number" />

Если существует определенный диапазон значений, которые являются действительными (вероятно, есть), тогда вы можете использовать RangeValidator, например, так:

<asp:RangeValidator runat="server" Type="Integer" 
MinimumValue="0" MaximumValue="400" ControlToValidate="ValueTextBox" 
ErrorMessage="Value must be a whole number between 0 and 400" />

Они будут проверяться только в том случае, если в TextBox есть текст, поэтому вам нужно будет также сохранить RequiredFieldValidator там.

Как сказал @ Mahin , обязательно проверьте свойство Page.IsValid на стороне сервера, в противном случае средство проверки работает только для пользователей с включенным JavaScript.

8 голосов
/ 14 марта 2013

Это прекрасно работает для меня:

<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"
     ControlToValidate="YourTextBoxID"
     ErrorMessage="Only numeric allowed." ForeColor="Red"
     ValidationExpression="^[0-9]*$" ValidationGroup="NumericValidate">*
</asp:RegularExpressionValidator>

Я думаю, вам следует добавить ValidationGroup="NumericValidate" к кнопке отправки.

4 голосов
/ 15 сентября 2009

Использование Int32.TryParse.

 int integer;
 Int32.TryParse(Textbox.Text, out integer)

Он вернет логическое значение, чтобы вы могли видеть, ввели ли они правильное целое число.

2 голосов
/ 15 сентября 2009

Есть несколько разных способов справиться с этим. Вы можете добавить RequiredFieldValidator, а также RangeValidator (если это подходит для вашего случая) или добавить CustomFieldValidator.

Ссылка на CustomFieldValidator: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.customvalidator%28VS.71%29.aspx

Ссылка на статью MSDN по проверке ASP.NET: http://msdn.microsoft.com/en-us/library/aa479045.aspx

2 голосов
/ 15 сентября 2009

Прикрепите валидатор регулярных выражений к текстовому полю и сделайте его выражение таким:

^\d+$

И, конечно же, выполните проверку на стороне сервера.

1 голос
/ 08 июля 2014

Visual Studio теперь имеет встроенную поддержку проверки диапазона и проверки типа: -

Попробуйте это: - Для ДИАПАЗОНА ПРОВЕРКИ Перед проверкой / проверкой определенного диапазона номеров. Включите режим конструктора в режиме разметки. Затем: -

Вид> Панель инструментов> Проверка

Теперь Перетащите RangeValidator на свою страницу дизайна, где вы хотите отобразить сообщение об ошибке (конечно, если пользователь вводит значение за пределами диапазона) Теперь нажмите на свой элемент управления RangeValidator. Щелкните правой кнопкой мыши и выберите свойства. В окне «Свойства» (которое обычно открывается под панелью решений) выберите «СООБЩЕНИЕ ОШИБКИ». Пишите: -

Номер должен находиться в диапазоне.

Теперь выберите Control для проверки и выберите свой TextboxID (или напишите его в любом случае) из выпадающего списка. Найдите текст в самой панели свойств и выберите Integer.
Прямо над ним вы найдете максимальное и минимальное значение. Введите желаемое число.

Для проверки типа (без какого-либо диапазона)
Перед проверкой / проверкой определенного диапазона номеров. Включите режим конструктора в режиме разметки. Затем: -

Вид> Панель инструментов> Проверка

Теперь Перетащите CompareValidator на свою страницу дизайна, где вы хотите показать сообщение об ошибке (конечно, если пользователь вводит в него какой-то текст). Теперь нажмите на свой элемент управления CompareValidator. Щелкните правой кнопкой мыши и выберите свойства. В окне «Свойства» (которое обычно открывается под панелью решений) выберите «СООБЩЕНИЕ ОШИБКИ». Напишите: -

Значение должно быть числом.

Теперь найдите параметр ControltoValidate и запишите в нем свое имя controlID (в качестве альтернативы вы также можете выбрать из выпадающего списка). Найдите опцию Operator и напишите в ней DataTypeCheck (в качестве альтернативы вы также можете выбрать из выпадающего списка). Снова найдите опцию Type и напишите в нем целое число.

Вот и сиди.

В качестве альтернативы вы можете написать следующий код на странице aspx: - <% - для проверки без какого-либо диапазона -%>

1 голос
/ 27 августа 2013

Вы можете использовать java-скрипт для этого: -

<asp:TextBox ID="textbox1" runat="server" Width="150px" MaxLength="8" onkeypress="if(event.keyCode<48 || event.keyCode>57)event.returnValue=false;"></asp:TextBox>
1 голос
/ 12 декабря 2012
<script language="javascript" type="text/javascript">
        function fixedlength(textboxID, keyEvent, maxlength) {
            //validation for digits upto 'maxlength' defined by caller function
            if (textboxID.value.length > maxlength) {
                textboxID.value = textboxID.value.substr(0, maxlength);
            }
            else if (textboxID.value.length < maxlength || textboxID.value.length == maxlength) {
                textboxID.value = textboxID.value.replace(/[^\d]+/g, '');
                return true;
            }
            else
                return false;
        }
 </script>

<asp:TextBox ID="txtNextVisit" runat="server" MaxLength="2" onblur="return fixedlength(this, event, 2);" onkeypress="return fixedlength(this, event, 2);" onkeyup="return fixedlength(this, event, 2);"></asp:TextBox> 
1 голос
/ 15 сентября 2009

http://msdn.microsoft.com/en-us/library/ad548tzy%28VS.71%29.aspx

При использовании элементов управления валидатора Сервера вы должны быть осторожны с фактом, что любой может отключить JavaScript в своем браузере. Поэтому вы должны использовать Page.IsValid Свойство всегда на стороне сервера.

0 голосов
/ 14 июля 2014

Дважды нажмите на кнопку и используйте следующий код: -

protected void button_click(object sender,EventArgs e)
{
 int parsedValue;
 if(int.TryParse(!txt.Text,out parsedValue))
 {
 Label.Text = "Please specify a number only !!"; //Will put a text in a label so make     
    //sure                
  //you have a label
 }
 else
  {
    // do what you want to  
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...