2014-01-23 7 views
0

У меня есть следующее условие IF в одной из моих программ, я устанавливаю условие для проверки того, являются ли обязательные текстовые поля пустыми, если это так, для отображения сообщения об ошибке, но даже если обязательный поля остаются пустыми, сохраняя записи независимо от обязательных полей.Оператор IF, похоже, имеет проблему

if (!txt_teacherid.Equals(null) && !txt_teacherid.Equals("") && !txt_teacherfname.Equals(null) && !txt_teacherfname.Equals("") && !txt_teacherlname.Equals(null) && !txt_teacherlname.Equals("") && !txt_teacherdob.Equals(null) && !txt_teacherdob.Equals("") && !txt_teachernationality.Equals(null) && !txt_teachernationality.Equals("") && !txt_teacheraddress.Equals(null) && !txt_teacheraddress.Equals("")) 
{ 
    String teacherid = txt_teacherid.Text.Trim(); 
    String teacherfname = txt_teacherfname.Text.Trim(); 
    String teacherlname = txt_teacherlname.Text.Trim(); 
    String teachergender = opt_gender.SelectedItem.Value.ToString(); 
    String teachercivilstatus = opt_civilstatus.SelectedItem.Value.ToString(); 
    String teacherdob = txt_teacherdob.Text.Trim(); 
    String teachernationality = txt_teachernationality.Text.Trim(); 
    String teacheraddress = txt_teacheraddress.Text.Trim(); 
    String teachercontactno = txt_teachercontactno.Text.Trim(); 
    String teacherqualification = txt_teacherqualification.Text.Trim(); 
    String teacherexperience = txt_teacherexperience.Text.Trim(); 
    String teacherjobtitle = txt_teacherjobtitle.Text.Trim(); 
    String teacherjoindate = txt_teacherjoindate.Text.Trim(); 
    String imgpath = (String)Session["imagepath"]; 

    DBConnection db = new DBConnection(); 
    db.getConnection(); 
    db.executeUpdateQuery("INSERT INTO Teacher (TeacherID,TeacherFirstName,TeacherLastName,TeacherGender,TeacherDOB,TeacherCivilStatus,TeacherNationality,TeacherQualification,TeacherExperience,TeacherJobTitle,TeacherAddress,TeacherContactNo,TeacherJoinDate,ImagePath) VALUES ('" + teacherid + "','" + teacherfname + "','" + teacherlname + "','" + teachergender + "','" + teacherdob + "','" + teachercivilstatus + "','" + teachernationality + "','" + teacherqualification + "','" + teacherexperience + "','" + teacherjobtitle + "','" + teacheraddress + "','" + teachercontactno + "','" + teacherjoindate + "','" + imgpath + "')"); 
    Session["imagepath"] = null; 
    Page.ClientScript.RegisterStartupScript(this.GetType(), "Call my function", "recordInserted();window.location.href='AdminRegisterTeacher.aspx'", true); 
    //Response.Redirect("AdminRegisterTeacher.aspx"); 
} 
else 
{ 
    InnerError ie = new InnerError(); 
    ie.throwError("Oops! There was an error, Make sure you have filled all mandatory data"); 
} 
+2

http://msdn.microsoft.com/en-us/library/ system.string.isnullorwhitespace (v = vs.110) .aspx –

+1

использовать 'string.IsNullOrEmpty' или' string.IsNullOrWhiteSpace'. Кроме того, не используйте '' '' 'literal', используйте' string.Empty'. – Jodrell

+3

... вы проверяете 'txt_teacherid', а не' txt_teacherid.Text' в выражении if. – MikeSmithDev

ответ

5

if (!txt_teacherid.Equals(null) && !txt_teacherid.Equals("")... является неправильно, поскольку вы проверяете контроль txt_teacherid, а не текст.

это должно быть просто

if (!String.IsNullOrEmpty(txt_teacherid.Text.Trim())...) 

или использовать String.IsNullOrWhiteSpace (.Net 4 и выше):

if (!String.IsNullOrWhiteSpace(txt_teacherid.Text) && ...) 

А также обратите внимание, вы должны использовать параметризованные запросы для защиты от инъекции SQL.

+0

Я считаю, что он проверяет, инициализирован ли элемент управления, прежде чем читать его значение – Jodrell

+0

@Jodrell возможно, но маловероятно, поскольку он также проверяет 'txt_teacherid.Equals (" ")'. – MikeSmithDev

+0

@Jodrell. Цель кода и вопроса заключается в проверке _value_ элемента управления, чтобы увидеть, осталось ли обязательное поле пустым. Если это так, проверка делается неправильно, и это ответ, который даст правильный результат. Кроме того, нет необходимости проверять, инициализирован ли элемент управления. –

1

Строка имеет метод, который является .IsNullOrEmpty(), который возвращает логическое значение. Вы пытались использовать это вместо этого?

Так будет:

if (!txt_teacherid.IsNullOrEmpty() && !txt_teacherfname.IsNullOrEmpty()&& !txt_teacherlname..IsNullOrEmpty() && !txt_teacherdob.IsNullOrEmpty() && !txt_teachernationality.IsNullOrEmpty() && !txt_teacheraddress.IsNullOrEmpty()) 
{ 
    //do database stuff here 
} 
+0

Я не могу найти такой метод в моем списке предложений в VS2010 –

+0

Да, извините, я ошибался, это статический метод, поэтому String.IsNullOrEmpty (txt_teacherid) ...и т. д. – TylerD87

2

Вы должны использовать одно из следующих действий:

  • string.IsNullOrEmpty()
  • string.IsNullOrWhiteSpace()
1

Используйте следующий код:

if (!String.IsNullOrEmpty(txt_teacherid) && !String.IsNullOrEmpty(txt_teacherfname) && !String.IsNullOrEmpty(txt_teacherlname) && !String.IsNullOrEmpty(txt_teacherdob) && !String.IsNullOrEmpty(txt_teachernationality) && !String.IsNullOrEmpty(txt_teacheraddress)) 
{ 
    \\Save Data 
} 
else 
{ 
    \\show error 
} 
0

Использование ниже кода

if (!txt_teacherid.Text.Equals(null) && !txt_teacherid.Text.Equals("") && !txt_teacherfname.Text.Equals(null) && !txt_teacherfname.Text.Equals("") && !txt_teacherlname.Text.Equals(null) && !txt_teacherlname.Text.Equals("") && !txt_teacherdob.Text.Equals(null) && !txt_teacherdob.Text.Equals("") && !txt_teachernationality.Text.Equals(null) && !txt_teachernationality.Text.Equals("") && !txt_teacheraddress.Text.Equals(null) && !txt_teacheraddress.Text.Equals("")) 

На месте существующего состояния

Смежные вопросы