ЕСЛИ тогда утверждение не работает правильно, где значение ничто - PullRequest
0 голосов
/ 27 февраля 2012

Приложение MVC3 VB.NET.У меня есть следующий раздел кода в функции.Этот код должен запускаться только в том случае, если handout1 не является ничем.Но по какой-то причине он входит в блок then, когда в базе данных ничего не написано в handout1 ... Я пробовал сто различных способов проверки, но он все еще пытается запустить эту строку кода, даже когда нечего назначатьэто ....

If Not _class1.Contains("---") Then
    _body = _body.Replace("[[Class1]]", _class1 + " : " + _day1Class.course_title)
    Dim _coursesREF As cours = db.courses.Where(Function(f) f.course_ref = class1).First
    If Not String.IsNullOrWhiteSpace(_coursesREF.handoutFile1) OrElse Not IsDBNull(_coursesREF.handoutFile1) Then
        _class1Handout = New Net.Mail.Attachment((Path.Combine(AppDomain.CurrentDomain.BaseDirectory) + "\CourseHandouts\") + _coursesREF.handoutFile1)
    End If
Else
    _body = _body.Replace("[[NL]][[Class1]]", String.Empty)
End If

Кто-нибудь видит, что я, очевидно, пропускаю ???

Ответы [ 2 ]

3 голосов
/ 27 февраля 2012

Я думаю, что ваша строка

If Not String.IsNullOrWhiteSpace(_coursesREF.handoutFile1) OrElse Not IsDBNull(_coursesREF.handoutFile1) Then

должна быть

If Not String.IsNullOrWhiteSpace(_coursesREF.handoutFile1) AndAlso Not IsDBNull(_coursesREF.handoutFile1) Then

DBNulls и ничего не эквивалентны.Итак, OrElse затем выполняет оценку для Nothing, являющегося DBNull, что не является истинным утверждением.Как только НЕ будет применено, вы получите истинную оценку.

1 голос
/ 27 февраля 2012

Попробуйте поставить точку останова и посмотрите, что раздаточный материал равен

If Not _class1.Contains("---") Then


   ''# Put a breakpoint on the next line
   Dim breakVariable = handout1
   ''# when the breakpoint fires, inspect the value of `handout1`


   _body = _body.Replace("[[Class1]]", _class1 + " : " + _day1Class.course_title)
   Dim _coursesREF As cours = db.courses.Where(Function(f) f.course_ref = class1).First
    If Not String.IsNullOrWhiteSpace(_coursesREF.handoutFile1) OrElse Not IsDBNull(_coursesREF.handoutFile1) Then
                                _class1Handout = New Net.Mail.Attachment((Path.Combine(AppDomain.CurrentDomain.BaseDirectory) + "\CourseHandouts\") + _coursesREF.handoutFile1)
     End If
 Else
    _body = _body.Replace("[[NL]][[Class1]]", String.Empty)
 End If

также, при дальнейшей проверке, вы можете изменить

If Not String.IsNullOrWhiteSpace(_coursesREF.handoutFile1) OrElse 
   Not IsDBNull(_coursesREF.handoutFile1) Then

и измените его на

If Not String.IsNullOrWhiteSpace(_coursesREF.handoutFile1) AndAlso 
   Not(_coursesREF.handoutFile1 Is Nothing) Then
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...