Ich versuche, bestimmte Daten aus verschiedenen Tabellen basierend auf einigen Anforderungen zu erhalten, Das Programm soll einige Spalten der Auswahl aus Tabellen nehmen: Contatti, Kontakte und Firmen, die sind an verschiedenen Orten und bringen sie zusammen.asp.net mvc 5 erhalten verwandte Daten aus verschiedenen Tabellen
Kontakt wird an Unternehmen durch CompanyID verbunden
Was ich will, ist der Firmennamen auf dem CompanyID Feld in Kontakt Tabelle stützen anzuzeigen. Das Problem ist, dass ich durch eine Liste iteriere, um die Daten in der Ansicht zu erhalten, und deshalb kann ich nicht scheinen, einen Firmennamen zu erhalten, der auf dem Unternehmensidentifikationsattribut basiert, das der Kontakt-Fremdschlüssel zu der Unternehmenstabelle ist, was ich Get ist die Namen aller Unternehmen, weil sie in der gleichen Liste sind.
Ich bin sicher, es gibt eine einfache Möglichkeit, dies zu tun, aber dies ist eine neue Welt für mich, danke für jede Hilfe.
Kontakt Modell:
public class Contact
{
[Key]
public int ContactId { get; set; }
public string Name { get; set; }
public string Address { get; set; }
public string City { get; set; }
public string State { get; set; }
public string Zip { get; set; }
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
[ForeignKey("Companies")]
public int CompanyId { get; set; }
public virtual ICollection<Companies> Companies { get; set; }
[Required]
//public virtual Contatti Contatti { get; set; }
public virtual ICollection<Contatti> Contatti { get; set; }
}
Firmen Modell:
public class Companies
{
[Key]
public int CompanyId { get; set; }
public string CompanyName { get; set; }
public string CompanyAddress { get; set; }
public string CompanyCity { get; set; }
public string CompanyState { get; set; }
public string CompanyZip { get; set; }
public string CompanyArea { get; set; }
}
Controller:
public ActionResult Index(String Page)
{
ContactsUni2 CU = new ContactsUni2();
CU.Contattis = db2.Contatti.ToList();
CU.Contacts = db.Contacts.ToList();
CU.Companies = db.Companies.ToList();
List<ContactsUni2> contactlist = new List<ContactsUni2>();
contactlist.Add(CU);
return View(contactlist);
}
Ausblick:
@foreach (var item in Model)
{
for (int i = 0; i < item.Contacts.Count; i++)
{
<tr>
<td>
@item.Contacts[i].ContactId
</td>
<td>
@item.Contacts[i].Name
</td>
<td>
@item.Contacts[i].Address
</td>
<td>
@item.Contacts[i].CompanyId
</td>
@if (@item.Contacts[i].CompanyId == item.Companies[i].CompanyId)
{
<td>
@item.Companies[i].CompanyName
</td>
<td>
@item.Companies[i].CompanyCity
</td>
<td>
@item.Companies[i].CompanyArea
</td>
}
}
</tr>
<tr>
<td>
@item.Contattis[i].ContattoID
</td>
<td>
@item.Contattis[i].Nome
</td>
<td>
@item.Contattis[i].Citta
</td>
<td>
@item.Contattis[i].CodicePostale
</td>
<td>
@item.Contattis[i].Email
</td>
</tr>
}
}
</table>
</body>
</html>
Vielen Dank für den Vorschlag, die Ansicht funktioniert jedoch nicht für mich, erlaubt mir nicht, Unternehmen zu Unternehmen zu werfen, was ist die Idee hinter Companies [i] .Companies [0]? Könnten Sie den Code etwas genauer machen? Entschuldigen Sie die Umstände. – Dantuzzo
Ups !, ich meinte Kontakte [i] .Companies [0], werde es beheben. Ich habe bemerkt, dass Sie eine Sammlung im Kontaktmodell verwenden, um Unternehmen zu verbinden, aber es scheint, dass die Absicht ist, nur eine Firma zu jedem Kontakt zu haben (das ist der Grund für .Companies [0]), zumindest ist das, was ich gelernt habe, als ich schaute bei Ihrem CompanyId Fremdschlüssel. –
Ich sehe, es macht Sinn, aber es sagt, dass ich Indizierung mit [] nicht auf einen Ausdruck des Typs ICollection bei Kontakte [i] anwenden kann.Unternehmen [0], diese Umgebung ist eine echte primadonna –
Dantuzzo