Je ne sais pas vraiment comment faire face à la question suivante:affichage de données relatives à un contact
Donc, j'ai une application basée sur le Web développé avec ASP.NET MVC3, qui sert à se rappeler quand un événement est relayé à certaines personnes.
J'ai 3 tables
Contact
id_contact
name
firstname
...
event
id_event
...
transmission
FK_id_event
FK_id_firstname
mailed (boolean)
phoned (boolean)
Pour chaque événement, je dois énumérer tous les contacts qui sont liés à cet événement. Et pour chaque contact, je dois afficher 2 cases à cocher qui doivent être vérifiées si le contact a été appelé ou posté.
'
' 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
Je ne sais pas si la partie "transmission" du code est bonne ou pas.
Ici, dans la vue, cela est si j'afficher les contacts
@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
Alors, ma question est, que dois-je faire pour afficher les cases à cocher?
(désolé si je ne comprends pas, je ne suis pas un anglophone natif, n'hésitez pas à éditer mes erreurs anglaises (ou le titre qui n'est pas génial)).
Avec l'aide de Yasser, je l'ai fait:
@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
Cependant, je reçois une erreur: Valeur de type 'System.Collections.Generic.IEnumerable (de Boolean)' ne peut pas être converti à 'Boolean'.
ajouter .FirstOrDefault() à votre requête comme, Dim courrier As Boolean = (D'un Model.Event Dans Où a.FK_id_contact = contact.idContact Et a.FK_id_event = Model.Opportunite.idOpportunite Sélectionnez a.mailed) .FirstOrDefault(); – Yasser
Il me dit que j'ai déjà un DataReader ouvert associé à cette connexion qui doit être fermé en premier. Je ne vois pas si je peux avoir une connexion ouverte. J'avais déjà eu ce genre d'erreur. Mettre un "tolist" après la requête linq avait résolu le problème.Ici, ça ne fait rien :-( –
J'ai mis un tolist() après toutes les requêtes du contrôleur, et ça a résolu le problème .Je ne sais pas pourquoi ... Thx, les cases à cocher sont maintenant affichées, Je vais utiliser une requête ajax pour mettre à jour les changements des cases à cocher –