отображение данных, связанных с контактом - PullRequest
0 голосов
/ 02 апреля 2012

Я действительно не знаю, как справиться со следующей проблемой:

Итак, у меня есть веб-приложение, разработанное с 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 (Of Boolean)» не может быть преобразовано в «Boolean».

Ответы [ 2 ]

2 голосов
/ 02 апреля 2012

Вот то, что должно помочь

 @{ 
 bool isMailed =  // set values;
 bool isPhoned = // set values
  }
@Html.CheckBox("mailed ", isMailed );
@Html.CheckBox("phoned", isPhoned );
1 голос
/ 02 апреля 2012

В вашей ContactViewModel вы можете иметь два свойства

bool isMailed ;
bool isPhoned ;

Затем вы можете запросить базу данных с вашего контроллера, прежде чем связать viewmodel представления и установить эти параметры. Например, если вы показываете данные для контакта с идентификатором = 1 и события с идентификатором = 2, вы можете запросить передачу таблицы базы данных и выяснить, звонили ли вы или отправили по почте ранее, и обновить переменную в ContactViewModel.

тогда, по вашему мнению, вы можете привязать значения к флажку следующим образом

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

если вы хотите обновить по почте или позвонить в базу данных, вы можете сделать это, используя вышеупомянутую ViewModel, отправив данные в контроллер. из контроллера вы можете узнать, что такое Event_Id, Contact_Id и отправлены по почте или по телефону, затем вы можете обновить базу данных соответственно

...