这是我到目前为止所做的,但我显然遇到了错误。
try
{
dblNights = Convert.ToDouble(txtNights.Text);
if (dblNights > 1 && 14)
{
}
else
{
string script = "alert(\"Number of Nights Must be between 1 and 14!\");";
ScriptManager.RegisterStartupScript(this, GetType(), "ServerControlScript", script, true);
txtNights.Focus();
}
}//End Try
catch
{
string script = "alert(\"Number of Nights Must be an Integer!\");";
ScriptManager.RegisterStartupScript(this, GetType(), "ServerControlScript", script, true);
txtNights.Focus();
}//End Catch
如果输入1-14之外的数字,我不太清楚如何显示错误框。其他一切都在起作用,就是这样。我做错了什么?
谢谢。
答案 0 :(得分:6)
问题:您未正确使用Logical AND
运算符。
此:
if (dblNights > 1 && 14)
{
}
必须:
if (dblNights >= 1 && dblNights <= 14)
{
/*valid range some thing here*/
}
编辑:正如Eric Lippert在评论中所建议的那样,我想向您展示TryParse
的使用情况。
如果您使用double.TryParse()
,则可以消除无效数据可能出现的Exceptions
。因为double.TryParse()
方法会返回Boolean
值true
转换成功,否则返回false
,以便您可以避免try catch
阻止。
试试这个:
double dblNights;
if (double.TryParse(txtNights.Text, out dblNights))
{
//conversion is successfull
}
else
{
//conversion is Failed
}
答案 1 :(得分:0)
我会使用RangeValidator
http://www.w3schools.com/aspnet/control_rangevalidator.asp
省去你重新发明轮子的麻烦。您可以将其Type属性设置为Integer或Double,而不必担心解析值只是为了验证它们。
答案 2 :(得分:-1)
您可以使用html 5
<input type="number" min="1" max="14" />