“FormatException未被用户代码处理”输入字符串的格式不正确

时间:2014-01-26 23:09:28

标签: c# asp.net

单击提交按钮而不键入number in my text box

我收到错误消息

  

FormatException未被用户代码处理,输入字符串不在   格式正确。

这是我的代码:

protected void btnSubmit_Click(object sender, EventArgs e)
{
    int section = Convert.ToInt32(lstSectionNumber.SelectedValue);
    double ticketQuantity = Convert.ToInt32(txtNumberOfTickets.Text);
}

我知道我可以验证文本框,所以我必须输入数字,但是任何人都可以引导我找到正确的方法吗?

谢谢,我一直只使用C#一周。

6 个答案:

答案 0 :(得分:3)

尝试使用int.TryParse方法。

    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        int section = 0; //or your default value
        double ticketQuantity = 0d; //Or your default value

        int.TryParse(lstSectionNumber.SelectedValue, out section);
        double.TryParse(txtNumberOfTickets.Text, out ticketQuantity);

    }

答案 1 :(得分:0)

 private void btnSubmit_Click(object sender, EventArgs e)
        {
            int section;

            int.TryParse(lstSectionNumber.SelectedItem.ToString(),out section);
            MessageBox.Show(section.ToString());


        }

答案 2 :(得分:0)

如果你想为此抛出异常,试试这个:

protected void btnSubmit_Click(object sender, EventArgs e)
{
    try
    {
        int section = Convert.ToInt32(lstSectionNumber.SelectedValue);
        double ticketQuantity = Convert.ToInt32(txtNumberOfTickets.Text);
    }

    catch (FormatException ex)
    {
        // put an error message.
    }
}

如果用户输入非数字值,则会抛出异常。

答案 3 :(得分:0)

尝试在TryParse中使用返回布尔值,如下所示:

protected void btnSubmit_Click(object sender, EventArgs e)
{
    int section = Convert.ToInt32(lstSectionNumber.SelectedValue);

    double ticketQuantity;
    if(!int.TryParse(txtNumberOfTickets.Text, out section))
    {
        //Some error handling here...like MessageBox.Show("Please enter a valid ticket quanity");
    }

    //Do you regular logic here...
}

旁注:为什么你的ticketQuantity是一个双倍但你转换为int?另请注意,根据1stSectionNumber用作源的内容,您可能会遇到类似的转换错误。处理用户输入时,通常最好包装Try-Catch,以便您的应用程序不会崩溃。甚至带有错误的MessageBox通常也比崩溃到桌面更好。

答案 4 :(得分:0)

 <tr>
        <td style="width:30%; text-align:right;">
              <asp:Label ID="lbltext" runat="server">Text Box</asp:Label>
        </td>
        <td style="width:30%; text-align:left;">
          <asp:TextBox ID="txtbox1" runat="server" 
                       ValidationGroup="Sample" 
                       Width="100%" >
          </asp:TextBox>
        </td>
        <td>
            <asp:RegularExpressionValidator ID="RegularExpressionValidator1" 
                                            runat="server"
                                            ControlToValidate="txtbox1" 
                                            Display="Dynamic"
                                            ErrorMessage="Only Numbers"
                                            ForeColor="Red"
                                            ValidationExpression="^[0-9]*$">
           </asp:RegularExpressionValidator>

            <asp:RequiredFieldValidator ID="RequiredFieldValidator1" 
                                        runat="server"
                                        ControlToValidate="txtbox1" 
                                        Display="Dynamic"
                                        ErrorMessage="Field cannot be left blank" 
                                        ForeColor="Red">
            </asp:RequiredFieldValidator>
         </td>
    </tr>

RegularExpression 添加到验证 文本框在文本框中获取仅数字,并添加 required字段到文本框,以便不允许传递空字符串

通过这种方式你实现了这个

如果你不想使用RegularExpression和RequiredField Validators,你可以改变你的代码,如下所示

 protected void btnSubmit_Click(object sender, EventArgs e)
    {
        int section;
        int.TryParse(ddl1.SelectedValue, out section);
        double ticketQuantity;
        double.TryParse(txtbox1.Text, out ticketQuantity);

    }

通过此,您将 Section 的值视为 0 ticketQuantity 强> 0.0

答案 5 :(得分:0)

int section ;
int.TryParse(lstSectionNumber.SelectedValue,out section);
double ticketQuantity;
double.TryParse(txtNumberOfTickets.Text,out ticketQuantity);

如果出现错误,您将获得0或0.0而不会抛出错误。