使用Getter&amp ;;在ASP.NET中进行验证二传手

时间:2013-11-11 08:35:18

标签: c# asp.net validation boolean

我正在尝试在用户输入正确时进行验证,我使用了带有黑色文本的标签来显示。相反,当用户输入不正确时,我在ASP.NET中的红色文本的另一个标签中显示错误消息。这是一个3层计划。这是我的表示层中的代码:

    protected void btn_submit_Click(object sender, EventArgs e)
{
    ToolsBLL calcBMI = new ToolsBLL();
    lbl_result.Text = "";
    lbl_invalid.Text = "";
    if (calcBMI.Valid == true)
    { 
        lbl_result.Text = calcBMI.calcBMI(tb_height.Text, tb_weight.Text);
    }
    else if (calcBMI.Valid == false)
    {
        lbl_invalid.Text = calcBMI.calcBMI(tb_height.Text, tb_weight.Text);
    }

}

它将调用在BusinessLogicLayer中命名为Valid的getter和setter来检查输入是否有效。这是我的BusinessLogicLayer中的代码:

    public static Boolean valid;
    public Boolean Valid
    {
        get { return valid; }
        set { valid = value; }
    }

    public string calcBMI(string sheight, string sweight)
    {
        decimal height = 0;
        decimal weight = 0;
        string bmiResultDesc = "";
        decimal bmi = 0;
        ToolsBLL.valid = true;

        if (sheight == "" && sweight == "")
        {
            ToolsBLL.valid = false;
            bmiResultDesc = "Height/Weight cannot be blank.";  
        }
        else
        {
            try
            {
                height = decimal.Parse(sheight);
                weight = decimal.Parse(sweight);
            }
            catch
            {
                ToolsBLL.valid = false;
                bmiResultDesc = "Height/Weight must be in numeric.";
            }
        }

        if (bmiResultDesc == "")
        {
            if (height <= 0)
            {
                ToolsBLL.valid = false;
                bmiResultDesc = "Invalid height";
            }
            else if (weight <= 0)
            {
                ToolsBLL.valid = false;
                bmiResultDesc = "Invalid weight";
            }
            else
            {
                BMICalculator.BMICalculator bmiCalc = new BMICalculator.BMICalculator();
                bmi = bmiCalc.computeBMI(height, weight);
                if (bmi <= 0)
                {
                    ToolsBLL.valid = false;
                    bmiResultDesc = "Error in consuming web services.";                   
                }
                else
                {
                    ToolsBLL.valid = true;
                    bmiResultDesc = "Your BMI is " + bmi.ToString();  
                }
            }

        }
        return bmiResultDesc;
    }

我使用getter和setter为boolean设置值。我不确定我是否以正确的方式做,因为我的BMICalculator表现得很奇怪。例如,当我键入正确的输入时,有时它显示为黑色,但有时显示为红色。我不知道为什么会这样。

提前致谢。

2 个答案:

答案 0 :(得分:0)

if (calcBMI.Valid == true)
{ 
    lbl_result.Text = calcBMI.calcBMI(tb_height.Text, tb_weight.Text);
    lbl_result.ForeColor = Color.Black;

}
else if (calcBMI.Valid == false)
{

    lbl_result.Text = "Your input is invalid";
    lbl_result.ForeColor = Color.Red;
}

答案 1 :(得分:0)

如果您想获得有关某些事物有效性的最新信息,您应该在需要时检查有效性,而不是在过去阅读一些有关您的有效性的属性。因此,在执行计算之前,只需添加方法验证并检查其中的验证。 并且最好使用验证属性来检查高度和重量是否为数字并且是。