2012-04-02 5 views
0

に関連するデータを表示する:私は本当に、次の問題に対処する方法がわからない接触

だから、私はときにイベントを覚えておくことが使用されているASP.NET MVC3で開発さウェブベースのアプリケーションを、しましたいくつかの人々に中継されます。

私は3つのテーブルイベントごと

Contact 
id_contact 
name 
firstname 
... 

event 
id_event 
... 

transmission 
FK_id_event 
FK_id_firstname 
mailed (boolean) 
phoned (boolean) 

をしました、私は、このイベントに関連するすべての連絡先の一覧を表示する必要があります。また、連絡先ごとに、連絡先が郵送されているかどうかをチェックする必要がある2つのチェックボックスを表示する必要があります。

' 
    ' GET: /Event/Details/5 

    Function Details(id As Integer) As ViewResult 
     Dim event As event = db.event.Single(Function(o) o.idOpportunite = id) 

     Dim contacts = (From a In db.contact, b In db.transmission 
         Where a.id_Contact = b.FK_id_contact And b.FK_id_event = id 
         Select a) 
     Dim transmission = (From a In contacts, b In db.transmission 
         Where a.id_Contact = b.FK_trans_cont 
         Select b) 

     Dim model = New EventDetails With { 
      .event= event, 
      .Contacts = contacts, 
      .TransOpp = transopp 
      } 

     Return View(model) 
    End Function 

コードの「送信」部分が良いかどうかわかりません。

ここで考慮すると、これはされた私は連絡先

 @For Each contact In Model.contacts 
      @<tr> 
       <td> 
        @Html.ActionLink(contact.name + " " + contact.firstname , "Details", New With {.id = contact.idContact}) 
       </td> 
       <td> 
        @Html.Raw(contact.phone) 
       </td> 
       <td> 
        @*Html.DisplayFor(Function(modelItem) currentItem.mail)*@ 
        <a href=mailto:@contact.mail>@Html.Raw(contact.mail)</a> 
       </td> 
       <td> 
        ***My checkboxes should be here*** 
       </td> 
      </tr> 
     Next 

を表示され、私の質問は、私は、これらのチェックボックスを表示するために何をすべき、ありますか?

(私が理解できないのであれば、私はネイティブの英語のスピーカーではありません。)私の英語の間違いを編集することを躊躇しないでください。ヤセルの助けを借りて

は、私はこれをやった:

    @code 
        Dim mail As Boolean = (From a In Model.Event 
        Where a.FK_id_contact = contact.idContact And a.FK_id_event = Model.Opportunite.idOpportunite 
        Select a.mailed) 

        End Code 

はしかし、私はエラーを取得する:タイプの 値「(ブール)System.Collections.Generic.IEnumerable」を変換できません〜 'ブール'。ここで

+0

のようにクエリに.FirstOrDefault()を追加するDim mail As Boolean =(In Model.Eventから ここで、a.FK_id_contact = contact.idContactとa.FK_id_event = Model.Opportunite.idOpportunite a.mailedを選択).FirstOrDefault(); – Yasser

+0

この接続に関連付けられている開いているDataReaderが既に閉じられている必要があることがわかります。私は開いたコネクションを持つことができるかどうかわかりません。私はすでにそのような誤りを抱えていました。 linqクエリの後に "tolist"を置くことで問題は解決しました。ここでは何もしません:-( –

+1

私はコントローラのすべてのクエリの後にtolist()を入れて、それは問題を解決しました。私はちょうど理由を知らない。チェックボックスが表示され、私は、チェックボックスの変更を更新するためにajaxクエリを使用します –

答えて

2

はあなたがのviewmodelにビューを結合して、設定する前に、あなたはあなたのコントローラからデータベースを照会することができる二つの特性

bool isMailed ; 
bool isPhoned ; 

を持つことができ、あなたのContactViewModelで

@{ 
bool isMailed = // set values; 
bool isPhoned = // set values 
    } 
@Html.CheckBox("mailed ", isMailed); 
@Html.CheckBox("phoned", isPhoned); 
+0

あなたの "設定値;"は私が持っている問題ですこれらの値を設定する方法?DBからのビューでそれらの値をキャッチする方法 –

+0

私は、あなたの答えが –

1

を支援すべきものですそれらのパラメータ。たとえば、連絡先ID = 1およびイベントID = 2のデータを表示している場合は、データベーステーブルの送信を照会して、ContactViewModelで変数を呼び出すかメールしたかどうかを確認して変数を更新できます。次のように

は、あなたのビューで、あなたは、チェックボックスに値をバインドすることができます

@Html.CheckBox("mailed ", contact.isMailed); 
@Html.CheckBox("phoned", contact.isPhoned); 

アップデートデータベースに郵送または電話をかけたい場合は、にデータを提出することにより、上記のViewModelを使用してそれを行うことができますコントローラ。コントローラーからEvent_Id、Contact_Id、郵送または電話を見つけることができます。それに応じてデータベースを更新することができます

+0

Thxの修正方法を本当に知らないというエラーがありました。あなたの答えが上のものより優れているかどうかは分かりませんが、最初のもの働いて、私はこれを使用します。 –

関連する問題