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 -