在文本框中输入自定义值时显示错误

时间:2013-06-06 01:47:08

标签: c# visual-studio-2010 visual-studio visual-studio-2012 master-pages

我在Visual Studio 2012中工作,我在尝试通过标签显示一个简单的错误消息时遇到问题,该标签是我在“年”期间创建的文本框。例如,如果用户在txtYears文本框中输入“dfasdfsa”,则会显示错误“年份必须是数字值”。为了更清楚,我将提供ID代表的内容。

txtPrincliple = Priciple amount for a loan
txtYears = duration of the loan in years
lblResult = Result to the button click and the solution 
rblYears = radiobuttonList for duration in years
MonthlyPayment() = is a created method that returns the Monthly payment from provide input

  protected void Button1_Click(object sender, EventArgs e)
   {
    bool error = false;
    //Display Error if non numeric is entered
    if (!double.TryParse(txtPrinciple.Text, out principle))
    {
        error = true;
        lblResult.Text = "The principle must be a numeric value!";
    }

    //Get the values
    if (rblYears.SelectedIndex == 0)
        years = 15;
    else if (rblYears.SelectedIndex == 1)
        years = 30;
    else
        double.TryParse(txtYears.Text, out years);
    //Display Error if custom duration is entered
    if (!double.TryParse(txtYears.Text, out years))
    {
        error = true;
        lblResult.Text = "The years must be a numeric value!";
    }
    //Get interest rate value
    double.TryParse(ddlInterestRate.SelectedValue, out interest);
    //Output the Monthly Payment if no errors
    if (!error)
    {
        lblResult.Text = string.Format("Your total monthly payment is {0}{1:0.00}",   "$", MonthlyPayment());
    }
 }

1 个答案:

答案 0 :(得分:2)

从我看到的,问题似乎来自于即使用户从RBL中选择了某些内容,您也会进行错误验证。我不完全确定我理解这个问题,但不是很清楚。

如果将其更改为

,它应该有效
//Get the values
    if (rblYears.SelectedIndex == 0)
        years = 15;
    else if (rblYears.SelectedIndex == 1)
        years = 30;
    else
    {
        //Display Error if custom duration is entered
        if (!double.TryParse(txtYears.Text, out years))
        {
            error = true;
            lblResult.Text = "The years must be a numeric value!";
        }
    }

我还删除了冗余的第一个TryParse(因为你在验证时这样做了)