ASP.NET:在文本框中输入非数字值时产生错误消息?

时间:2010-05-09 15:16:41

标签: c# asp.net string webforms textbox

如果用户在TextBox中输入非数字值并按下Button,我想在Label上显示错误消息。

我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:2)

如果你正在使用ASP.NET webforms,也许你有这样的标记:

<asp:TextBox runat="server" ID="TextBox1" Text="Default Text!" />
<asp:Button ID="Button1" runat="server" Text="Click Me" OnClick="ChangeIt" />
<br />
<br />
<asp:Label ID="Label1" runat="server" Text="default!" />

然后你的代码隐藏将需要一个方法来处理按钮的click事件。这将导致回复。

protected void ChangeIt(Object sender,EventArgs e)
{
   // ensure that the value in the textbox is numbers only.
   // there are always questions here whether you care about 
   // decimals, negative numbers, etc. Implement  it as you see fit.
   string userEnteredText = TextBox1.Text.Trim();
   long resultantNumber;

   if (!long.TryParse(userEnteredText, out resultantNumber))
   {
      Label1.Text = string.Format( "It looks like this isn't a number: '{0}'",
                    userEnteredText);
   }
}

答案 1 :(得分:1)

你是说你想只允许数字吗?

<asp:TextBox runat="server" ID="TextBox1" />
<asp:RegularExpressionValidator runat="server" ID="RegularExpressionValidator1" ControlToValidate="TextBox1" ErrorMessage="Digits only, please" ValidationExpression="^\d+$" />

如果这只允许数字,但也允许您完全跳过该框。如果您想要它,请添加:

<asp:RequiredFieldValidator runat="server" ID="RequiredFieldValidator1" ControlToValidate="TextBox1" ErrorMessage="Required" />

更新:如果您想接受“3.5”之类的十进制值以及“3”,请修改上面提供的RegularExpressionValidator中的ValidationExpression以读取“^ \ d +(\。 \ d +)?$“

答案 2 :(得分:0)

假设您要检查输入是数字还是字符串(如果输入是字符串则显示错误),您可以使用int.TryParse函数执行类似的操作:

protected void Button1_Click(object sender, EventArgs e)
{
    int readValue;
    if (!int.TryParse(TextBox1.Text, out readValue))
        Label1.Text = "Error";
}