我真的不知道该如何应对下一个问题:相关的联系人显示数据
所以,我用ASP.NET MVC3,这是用来记得当事件developped一个基于Web的应用程序被传达给一些人。
我有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(布尔)”不能转换到'布尔'。
添加.FirstOrDefault()到你的查询, Dim mail As Boolean =(From a In Model.Event 其中a.FK_id_contact = contact.idContact和a.FK_id_event = Model.Opportunite.idOpportunite 选择a.mailed).FirstOrDefault(); – Yasser 2012-04-02 10:39:36
它告诉我,我已经有一个打开的DataReader与这个连接相关联,必须先关闭它。我没有看到我可以有一个开放的联系。我已经有过这种错误。在linq查询之后加入“tolist”已经解决了这个问题。在这里,它什么都不做:-( – 2012-04-02 10:53:07
我在控制器的所有查询之后放了一个tolist(),它解决了这个问题,我只是不知道为什么,Thx,复选框现在显示出来,我将使用ajax查询来更新复选框的更改 – 2012-04-02 10:54:54