24 messaggi dal 06 novembre 2014
Ciao a tutti, ho costruito la seguente struttura per gestire un elenco di clienti e contatti, con relazione many-to-many.

public class client
    {
        public int ID { get; set; }
        public string clientCode { get; set; }       
        public string clientFirstName { get; set; }
        public string clientLastName { get; set; }
        public virtual ICollection<clientContact> clientContacts { get; set; }
        public client()
        {
            this.clientContacts = new HashSet<clientContact>();
        }
     }

public class contact
    {
        public int ID { get; set; }
        public string firstName { get; set; }
        public string lastName { get; set; }
        public virtual ICollection<clientContact> clientContacts { get; set; }
        public contact()
        {
            this.clientContacts = new HashSet<clientContact>();
        }
    }

public class clientContact
    {
        public int ID { get; set; }
        public int clientID { get; set; }
        public int contactID { get; set; }
        public virtual client client { get; set; }
        public virtual contact contact { get; set; }        
    }


Innanzitutto, è corretta una struttura del genere?
Per visualizzare il dettaglio di un cliente e i relativi contatti associati in una view ho costruito un modello apposito
 public class ClientDetails
    {
        public client client { get; set; }
        public IEnumerable<contact> contacts { get; set; }
    }


Nella view per visualizzare i dati di client nessun problema
@model CRM.Areas.Admin.Models.ClientDetails

    <h4>Dati anagrafici</h4>
    <table class="table table-striped">
        
        <tr>
            <th>
                @Html.DisplayNameFor(model => model.client.FirstName)
            </th>
            <td>
                @Html.DisplayFor(model => model.client.FirstName)
            </td>
        </tr>
        <tr>
            <th>
                @Html.DisplayNameFor(model => model.client.LastName)
            </th>
            <td>
                @Html.DisplayFor(model => model.client.LastName)
            </td>
        </tr>


il problema mi sorge per visualizzare l'elenco dei contatti contenuto in IEnumerable<contact> contacts, che ho popolato correttamente nel controller.
Che metodo è meglio utilizzare?
Ho provato con
<h4>Contatti</h4>
<table>
    <tr>
        <th>
            Nome
        </th>
    </tr>
    @foreach (var item in Model.contacts)
    {
        <tr>
            <td>
                @item.LastName
            </td>
        </tr>
    }
</table>


ma volevo capire se è possibile usare @Html.DisplayNameFor e DisplayFor come nell'elenco sopra.
Modificato da papell il 05 settembre 2017 09.47 -
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
hai provato così?

@foreach (var item in Model.contacts)
    {
        <tr>
            <td>
                @Html.DisplayFor(model => item.LastName)
            </td>
        </tr>
    }

Enjoy learning and just keep making
1.495 messaggi dal 27 dicembre 2005
model => è un nome a piacere o va messo proprio quello ?
11.886 messaggi dal 09 febbraio 2002
Contributi
E' un nome a piacere.
Una lambda expression è un metodo anonimo e, proprio come un metodo, ti permette di decidere i nomi dei suoi parametri. model è appunto un parametro del metodo e avrei potuto chiamato m o modello. Nel corpo della lambda expression non lo uso perché mi interessa invece indicare la proprietà LastName dell'item corrente.

ciao,
Moreno

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.