0

ユーザー入力が正しい場合に検証を実行しようとしています。表示するために黒いテキストのラベルを使用しました。逆に、ユーザー入力が正しくない場合は、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;
    }

ゲッターとセッターを使用して、ブール値の値を設定しました。BMICalculator の動作がおかしいため、正しい方法で行っているかどうかわかりません。たとえば、正しい入力を入力すると、黒で表示される場合と赤で表示される場合があります。なぜそうなのか、私にはわかりません。

前もって感謝します。

4

2 に答える 2

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;
}
于 2013-11-11T08:42:45.293 に答える
0

何かの有効性に関する最新の情報を取得したい場合は、過去の有効性を示すプロパティを読み取るのではなく、必要なときに有効性を確認する必要があります。そのため、計算を実行する前にメソッド Validate を追加して検証をチェックするだけです。また、検証属性を使用して、身長と体重が数値であるかどうかを確認することをお勧めします。

于 2013-11-11T08:47:48.817 に答える