私の最初のテーブルは次のとおりです。
最初のテーブル名: Contacts
ContactID (PK)
FirstName
LastName
Company
2 番目のテーブル名: Phones
ContactID (FK)
PhoneType
PhoneNumber
私のビューモデルは
public class ContactVM2
{
public int ContactID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Company { get; set; }
public string PhoneType { get; set; }
public string PhoneNumber { get; set; }
}
リポジトリクラスは
public class ContactRepository
{
ContactsDBEntities dbRepo = new ContactsDBEntities();
public List<ContactVM> GetAllContacts()
{
List<ContactVM> ContactViewList = new List<ContactVM>();
var allContacts = dbRepo.Contacts.ToList();
var allPhones = dbRepo.Phones.ToList();
foreach (var cont in allContacts)
{
foreach (var ph in allPhones)
{
if (cont.ContactID == ph.ContactID)
{
ContactViewList.Add(new ContactVM(){
ContactID =cont.ContactID,
FirstName=cont.FirstName,
LastName=cont.LastName,
Company=cont.Company,
PhoneType=ph.PhoneType,
PhoneNumber=ph.PhoneNumber});
}
}
}
return ContactViewList;
}
}
そしてコントローラーは
public ActionResult Index()
{
ContactRepository contRepo = new ContactRepository();
var allContacts = contRepo.GetAllContacts().ToList();
return View(allContacts);
}
連絡先テーブルに次のデータがあります
ContactID FirstName LastName Company
1 Bill Gates Microsoft
および Phones テーブルの
ContactID PhoneType PhoneNumber
1 Home 1111
1 Office 2222
次の結果が得られます
1 Bill Gates Home 1111
1 Bill Gates Office 2222
連絡先の詳細が繰り返される場所。
次の結果が必要です
1 Bill Gates Home 1111
Office 2222
View で次の変更も試しました
<td style="border:2px solid Blue;">
@{
foreach (var parent in Model.Where(x=>x.ContactID==item.ContactID).GroupBy(m=>m.PhoneNumber))
{
foreach( var itm in parent )
{
@itm.PhoneNumber <br />
}
}
}
</td>
<td style="border:2px solid red;">
@{
foreach (var parent in Model.Where(x=>x.ContactID==item.ContactID).GroupBy(m=>m.PhoneType))
{
foreach( var itm in parent )
{
@itm.PhoneType <br />
}
}
}
</td>
しかし、それはまだ記録を繰り返しています。
次に、ModelViewの変更をたどってみました
public List<string> PhoneType { get; set; }
public List<string> PhoneNumber { get; set; }
しかし、結果は得られませんでした。
私は非常に初心者レベルであるため、最も簡単な例を挙げて誰かが助けることができますか.
View での Phone Iteration のないコード
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.ContactID)
</td>
<td>
@Html.DisplayFor(modelItem => item.FirstName)
</td>
<td>
@Html.DisplayFor(modelItem => item.LastName)
</td>
<td>
@Html.DisplayFor(modelItem => item.Company)
</td>
<td>
@Html.DisplayFor(modelItem => item.PhoneType)
</td>
<td>
@Html.DisplayFor(modelItem => item.PhoneNumber)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) |
@Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) |
@Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })
</td>
</tr>