2012-03-09 21 views
1

おはようございます、皆さん、オブジェクト参照がオブジェクトに設定されていません

いつも存在するわけではないデータの表示に問題があります。このコードで

<div class="display-label">client</div> 
<div class="display-field"> 
    @Model.Contact.client.nomCompteClient 
</div> 

<div class="display-label">civilite</div> 
<div class="display-field"> 
    @Model.Contact.civilite 
</div> 

@ Model.Contact.client.nomCompteClientが設定されていない場合、私は、次のエラーを取得:オブジェクト参照がオブジェクトのインスタンスに設定されていません。 しかし、他のすべてのデータが空であれば問題はなく、何も表示されません。 "nomCompteClient"を必須に設定するために私が何をしたのか分かりません。私は英語のネイティブスピーカーではないよ、ここ

Function Details(id As Integer) As ActionResult 
     Dim contact As contact = db.contact.Single(Function(c) c.idContact = id) 
     Dim meetings = (From d In db.meeting 
         Where d.FK_meet_contact = id 
         Select d).ToList() 
     Dim opportunites = (From e In db.opportunite 
          From f In db.transmission_opportunite 
          Where f.FK_trans_cont = id And f.FK_trans_opp = e.idOpportunite 
          Select e).ToList() 
     Dim interviews = (From g In db.interview 
          Where g.FK_int_contact = id 
          Select g).ToList() 


     Dim model = New ContactDetails With { 
      .Contact = contact, 
      .Meetings = meetings, 
      .Interviews = interviews, 
      .Opportunites = opportunites 
     } 

     Return View(model) 
    End Function 

が、私は申し訳ありません
Public Class ContactDetails 
    Public Property Contact As contact 
    Public Property Meetings As IEnumerable(Of meeting) 
    Public Property Interviews As IEnumerable(Of interview) 
    Public Property Opportunites As IEnumerable(Of opportunite) 
End Class 

私の英語が吸う場合

を使用していたモデルです。

は、ここに私のコントローラです。

編集: 私は答えることを許可されていないので、私は「解決策」で編集だろう、私は私が最終的にそのように固定

が見つかりました:

<div class="display-field"> 
    @If Model.Contact.FK_contact_client Then 
     @Model.Contact.client.nomCompteClient 
     End If 
    </div> 

FK_contact_clientがFKであること連絡先が働いているクライアントを指します。

これ以上の可能性はありませんでしたか?

答えて

3

あなたの質問はASP.NET MVCとはまったく関係ありません。これはオブジェクト参照に関する.NETの基本的な質問です。プロパティとサブプロパティを持つオブジェクト階層を設計しました。 Model.Contact.client.nomCompteClientにアクセスするには、最初にContactプロパティ、次にclientプロパティを初期化する必要があります。

ここでは、データベースから連絡先を取得しているように見える:

Dim contact As contact = db.contact.Single(Function(c) c.idContact = id) 

は、返されるオブジェクトには、 clientプロパティがそうでなければ、あなたがそれを使用することはできません初期化されていることを確認してください。ここで例えば

@Model.Contact.civilite 

Contactプロパティがnullではないがために、これは何も表示されません、それがnullではないか、それ上の任意のメソッドやプロパティを呼び出そうもはやあなたを空にしてもciviliteプロパティ。

+0

私はあなたが私が説明しようとしていることを理解しているかどうか分からないので、自分自身を理解することができなかったと思います。 私があなたに示したビューは、連絡先に関する情報を表示する必要があります。この連絡先はクライアントでも動作しますが、まだどのクライアントでも動作しない可能性があります。 したがって、連絡先に設定されているクライアントプロパティがない場合。どうやってこのプロパティを表示するのを忘れてしまうのか? –

+0

@patxyでは、@ Model.Contact.client.nomCompteClientはここでエラーになる理由を尋ねますが、ここでは@ Model.Contact.civiliteはエラーになりません。その理由は、 'client'プロパティがnullで、最初のケースでは、いくつかのサブプロパティを呼び出そうとしますが、第2の場合には、この' client'プロパティを全く使用しないからです。 –

+0

私は自分の質問を解決しました(私自身の質問には答えられませんでした)。 –

関連する問題