ユーザー入力が正しい場合に検証を実行しようとしています。表示するために黒いテキストのラベルを使用しました。逆に、ユーザー入力が正しくない場合は、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 の動作がおかしいため、正しい方法で行っているかどうかわかりません。たとえば、正しい入力を入力すると、黒で表示される場合と赤で表示される場合があります。なぜそうなのか、私にはわかりません。
前もって感謝します。