2013-11-11 2 views
0

Я пытаюсь сделать валидацию при правильном вводе пользователя, я использовал ярлык с черным текстом для отображения. Наоборот, когда пользовательский ввод неверен, я отображаю сообщение об ошибке на другой метке с красным текстом в ASP.NET. Это трехуровневая программа. Вот коды в моем представлении слоя:Проверка в ASP.NET с помощью Getter & Setter

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, чтобы проверить, является ли вход правилен. А вот коды в моем 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 ведет себя странно. Например, когда я вводим правильный ввод, иногда он отображается черным, но иногда он отображается красным цветом. Я понятия не имею, почему так.

Заранее спасибо.

ответ

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; 
} 
+0

Нет, я пытаюсь показать одну метку для каждого пользовательского ввода. Не сразу оба сразу –

+0

Хорошо. Но почему, почему вы используете в своем коде две разные метки? Просто используйте 1 и измените его цвет и текст. – user1646737

+0

Как я должен это делать? Я думал, что можно изменить цвет шрифта через свойство? –

0

Если вы хотите, чтобы получить последнюю актуальную информацию о действительности что-то, вы должны проверить действительность, когда вам это нужно, а не читать некоторые свойства thatsay вам о действительности в прошлом. Поэтому просто добавьте метод Проверять и проверять проверку в нем перед выполнением вычислений. И будет хорошей идеей использовать атрибуты проверки, чтобы проверить, является ли высота и вес числовой и есть.

+0

Хорошо спасибо. Я постараюсь переформатировать мои коды –