Есть ли способ использовать RangeValidator для больших чисел (диапазон Int64)?
с использованием Asp.Net RangeValidator для Int64
Ответы (1)
Убедившись, что это невозможно сделать с помощью только валидатора диапазона. Ниже я перечислил альтернативы, в которых используются валидаторы веб-форм.
HTML:
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:RangeValidator ID="RangeValidator1" ControlToValidate="TextBox1"
runat="server" ErrorMessage="Help" SetFocusOnError="True" Type="Double"></asp:RangeValidator>
HTML Alt:
Вы можете использовать здесь комбо. Один для проверки того, что он находится в 64-битном диапазоне, и один для проверки его просто целого числа. Кажется неуклюжим, но это должно сработать.
<asp:RangeValidator ID="RangeValidator1" ControlToValidate="TextBox1"
runat="server" ErrorMessage="Help" SetFocusOnError="True" Type="Double"></asp:RangeValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"
ControlToValidate="TextBox1" ErrorMessage="RegularExpressionValidator"
ValidationExpression="[1-9]\d*"></asp:RegularExpressionValidator>
Код позади:
protected void Page_Load(object sender, EventArgs e) {
this.RangeValidator1.MaximumValue = Int64.MaxValue.ToString();
}
person
Community
schedule
04.04.2011
Да, и я получаю это сообщение: значение 9223372036854775807 свойства MaximumValue объекта RangeValidator1 не может быть преобразовано в тип Integer
- person nima; 04.04.2011
Не могли бы вы показать мне больше вашего кода / html? Я установил быстрый пример проекта с текстовым полем и валидатором диапазона, и все заработало, как ожидалось.
- person ; 04.04.2011
Спасибо за то, что вы созрели. Ваш образец работает, потому что тип RangeValidator по умолчанию - String, поэтому вы можете назначить любую строку максимальному значению. Но проблема в том, что вы используете этот валидатор для проверки чисел, например 93 не будет проверять, потому что он больше, чем Int64.MaxValue (9223372036854775807) по строке.
- person nima; 05.04.2011
Измените значение типа на двойное. Это, очевидно, позволит использовать 64-битные числа с плавающей запятой, но не с уверенностью в ваших требованиях. Отредактированный код выше.
- person ; 05.04.2011
Спасибо за решение, но есть одна маленькая проблема. С двумя валидаторами, один из которых просит пользователя ввести число, а другой проверяет диапазон, если пользователь вводит нечисловой символ, сообщение будет отображаться далеко от текстового поля, потому что пространство сохраняется для первого валидатора. Есть ли способ уменьшить валидаро, когда у них нет сообщения?
- person nima; 05.04.2011
HTML-код, сгенерированный этими элементами управления, может быть стилизован с помощью CSS по своему усмотрению. Они генерируют элементы ‹span›, которые можно стилизовать с помощью CSS. Чтобы упростить CSS, добавьте CssClass = anyClassYouLike к каждому валидатору.
- person ; 06.04.2011
По умолчанию для допустимого валидатора задан скрытый стиль видимости, что означает, что элемент не отображается на экране, но макет остается в силе. Добавляя
Display="Dynamic"
к валидатору, он использует display:none
, чтобы скрыть валидатор, когда он действителен.
- person ajbeaven; 16.04.2012