显示与联系人相关的数据

时间:2012-04-02 09:17:26

标签: vb.net asp.net-mvc-3 razor checkbox

我真的不知道如何处理下一期:

因此,我使用ASP.NET MVC3开发了一个基于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(Of Boolean)'的值不能转换为'Boolean'。

2 个答案:

答案 0 :(得分:2)

这是应该有用的东西

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

答案 1 :(得分:1)

在您的ContactViewModel中,您可以拥有两个属性

bool isMailed ;
bool isPhoned ;

然后,在绑定viewmodel视图并设置这些参数之前,您可以从控制器查询数据库。例如,如果要显示联系人ID = 1和事件id = 2的数据,则可以查询数据库表传输并查找是否已在之前调用或邮寄并更新ContactViewModel中的变量。

然后在您的视图中,您可以将值绑定到复选框,如下所示

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

如果您想更新数据库中的邮寄或电话,您可以使用上述ViewModel通过向控制器提交数据来完成。从控制器你可以找到什么是Event_Id,Contact_Id并邮寄或打电话,然后你可以相应地更新数据库