2012-02-27 14 views
0

MVC3 VB.NETアプリケーション。私は以下のコードセクションを関数に持っています。このコードは、ハンドアウト1が何もない場合にのみ発生すると考えられています。しかし、何らかの理由で、ハンドアウト1がデータベースに何もないときにブロックに入るのです...私は100種類の異なる方法を試しましたが、割り当ての必要がない場合でもそのコード行を実行しようとしていますそれは....IFその後、値が何もないところで文が正しく機能しない

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 

誰かが私が明らかに見落としているのを見ますか?

+1

コードをデバッグすることによって、_coursesREF.handoutFile1の値を決定し、それに従って解決することができます。 –

答えて

1

でブレークポイントを入れて試してみて、配布資料が詳細な検査をすると、

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 
3
に変更します

私はあなたのラインと思います

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としていますが、これは真の文ではありません。 NOTが適用されると、あなたは真の評価を得ます。

関連する問題