我的第一张表是:
第一个表名:联系人
ContactID(PK)
名字
姓氏
公司
第二桌名称:电话
ContactID(FK)
PHONETYPE
******中国
我的观点模特是
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;
}
}
和Controller是
public ActionResult Index()
{
ContactRepository contRepo = new ContactRepository();
var allContacts = contRepo.GetAllContacts().ToList();
return View(allContacts);
}
我在联系人表格中有以下数据
ContactID FirstName LastName公司
1比尔盖茨微软
和电话表中
ContactID PhoneType PhoneNumber
1个首页1111
1个办公室2222
我得到以下结果
1 Bill Gates Home 1111
1 Bill Gates Office 2222
联系方式重复的地方
我需要以下结果
1 Bill Gates Home 1111
办公室2222
我也尝试过在视图中进行以下更改
<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; }
但没有得到结果 任何人都可以提供最简单的示例,因为我处于初级阶段。 视图中没有电话迭代的代码
@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>
答案 0 :(得分:0)
您应该从存储库类中删除迭代并为电话号码创建一个单独的类,并在ContactVM2中添加该类的变量,如下面的模型:
public class ContactVM2
{
public int ContactID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Company { get; set; }
public List<ContactVM2Phone> PhoneList {get; set;}
}
public class ContactVM2Phone
{
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)
{
ContactViewList obj= new ContactVM()
obj.ContactID =cont.ContactID;
obj.FirstName=cont.FirstName;
obj.LastName=cont.LastName;
obj.Company=cont.Company;
List<ContactVM2Phone> Phonelist= new List<ContactVM2Phone>();
foreach (var ph in allPhones)
{
if (cont.ContactID == ph.ContactID)
{
Phonelist.Add(new ContactVM2Phone(){
PhoneType=ph.PhoneType,
PhoneNumber=ph.PhoneNumber});
}
}
obj.PhoneList =Phonelist;
ContactViewList.Add(obj);
}
return ContactViewList;
}
}