ASP.NET MVC 中的内部联接 table 列表
Inner Join table listing in ASP.NET MVC
我正在尝试使用内部联接列出 2 个表中的项目。我觉得观点有问题。请帮助我。
这是我得到的错误
The model item passed into the dictionary is of type 'PersonelGiriş_MVC.Models.ortaktablo', but this dictionary requires a model item of type 'System.Collections.Generic.List`1[PersonelGiriş_MVC.Models.ortaktablo]'.
型号类:
public class personel
{
public int id { get; set; }
[Required(ErrorMessage = "Bu alan boş geçilemez!")]
public string isim { get; set; }
[Required(ErrorMessage = "Bu alan boş geçilemez!")]
public string soyisim { get; set; }
[Required(ErrorMessage = "Bu alan boş geçilemez!")]
public string tcno { get; set; }
[Required(ErrorMessage = "Bu alan boş geçilemez!")]
[DataType(DataType.DateTime, ErrorMessage = "Lütfen doğum tarihinizi doğru bir şekilde giriniz.")]
public int dogumtarihi { get; set; }
[Required(ErrorMessage = "Bu alan boş geçilemez!")]
public string dogumyeri { get; set; }
[Required(ErrorMessage = "Bu alan boş geçilemez!")]
public string cinsiyet { get; set; }
[Required(ErrorMessage = "Bu alan boş geçilemez!")]
public string kangrubu { get; set; }
[Required(ErrorMessage = "Bu alan boş geçilemez!")]
public string adres { get; set; }
[Required(ErrorMessage = "Bu alan boş geçilemez!")]
[DataType(DataType.PhoneNumber, ErrorMessage = "Lütfen telefon numaranızı doğru bir şekilde giriniz.")]
public string telno { get; set; }
public string resimismi { get; set; }
public virtual List<saat> saatler { get; set; }
}
public class saat
{
public int saatid { get; set; }
public string girissaati { get; set; }
public string cikissaati { get; set; }
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd'/'MM'/'yyyy}")]
public DateTime? kayittarihi { get; set; }
//her giriş/çıkış saati yanlızca bir ait olabilir.
public virtual personel personel { get; set; }
}
public class ortaktablo
{
public string p_isim { get; set; }
public string p_soyisim { get; set; }
public string p_girissaati { get; set; }
public string p_cikissaati { get; set; }
public List<ortaktablo> toplamtablo { get; set; }
}
控制器:
var secim = (from saat_veri in db.saatler
join per_veri in db.personeller on saat_veri.personel.id equals per_veri.id
select new ortaktablo { p_isim = per_veri.isim, p_soyisim = per_veri.soyisim, p_girissaati = saat_veri.girissaati, p_cikissaati = saat_veri.cikissaati });
var Model = new ortaktablo { toplamtablo = secim.ToList() };
return View(Model);
查看:
@model List<PersonelGiriş_MVC.Models.ortaktablo>
@if (Model != null)
{
foreach (var item in Model)
{
<tr class="info">
<td>@Html.DisplayFor(i => item.p_isim)</td>
<td>@Html.DisplayFor(i => item.p_soyisim)</td>
<td>@Html.DisplayFor(i => item.p_girissaati)</td>
<td>@Html.DisplayFor(i => item.p_cikissaati)</td>
</tr>
}
}
您将单个对象作为模型传递给视图,而您的视图是强类型集合。您需要更改视图或操作以匹配类型。看起来要传递一个对象。
将视图代码更改为:
@model PersonelGiriş_MVC.Models.ortaktablo
@if (Model != null)
{
<tr class="info">
<td>@Html.DisplayFor(i => ip_isim)</td>
<td>@Html.DisplayFor(i => i.p_soyisim)</td>
<td>@Html.DisplayFor(i => i.p_girissaati)</td>
<td>@Html.DisplayFor(i => i.p_cikissaati)</td>
</tr>
}
This is how you create the model you pass
var Model = new ortaktablo { toplamtablo = secim.ToList() };
so you need to use Model.toplamtablo
in your foreach because that is where your list are set
foreach (var item in Model.toplamtablo)
{
<tr class="info">
<td>@Html.DisplayFor(i => item.p_isim)</td>
<td>@Html.DisplayFor(i => item.p_soyisim)</td>
<td>@Html.DisplayFor(i => item.p_girissaati)</td>
<td>@Html.DisplayFor(i => item.p_cikissaati)</td>
</tr>
}
我正在尝试使用内部联接列出 2 个表中的项目。我觉得观点有问题。请帮助我。
这是我得到的错误
The model item passed into the dictionary is of type 'PersonelGiriş_MVC.Models.ortaktablo', but this dictionary requires a model item of type 'System.Collections.Generic.List`1[PersonelGiriş_MVC.Models.ortaktablo]'.
型号类:
public class personel
{
public int id { get; set; }
[Required(ErrorMessage = "Bu alan boş geçilemez!")]
public string isim { get; set; }
[Required(ErrorMessage = "Bu alan boş geçilemez!")]
public string soyisim { get; set; }
[Required(ErrorMessage = "Bu alan boş geçilemez!")]
public string tcno { get; set; }
[Required(ErrorMessage = "Bu alan boş geçilemez!")]
[DataType(DataType.DateTime, ErrorMessage = "Lütfen doğum tarihinizi doğru bir şekilde giriniz.")]
public int dogumtarihi { get; set; }
[Required(ErrorMessage = "Bu alan boş geçilemez!")]
public string dogumyeri { get; set; }
[Required(ErrorMessage = "Bu alan boş geçilemez!")]
public string cinsiyet { get; set; }
[Required(ErrorMessage = "Bu alan boş geçilemez!")]
public string kangrubu { get; set; }
[Required(ErrorMessage = "Bu alan boş geçilemez!")]
public string adres { get; set; }
[Required(ErrorMessage = "Bu alan boş geçilemez!")]
[DataType(DataType.PhoneNumber, ErrorMessage = "Lütfen telefon numaranızı doğru bir şekilde giriniz.")]
public string telno { get; set; }
public string resimismi { get; set; }
public virtual List<saat> saatler { get; set; }
}
public class saat
{
public int saatid { get; set; }
public string girissaati { get; set; }
public string cikissaati { get; set; }
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd'/'MM'/'yyyy}")]
public DateTime? kayittarihi { get; set; }
//her giriş/çıkış saati yanlızca bir ait olabilir.
public virtual personel personel { get; set; }
}
public class ortaktablo
{
public string p_isim { get; set; }
public string p_soyisim { get; set; }
public string p_girissaati { get; set; }
public string p_cikissaati { get; set; }
public List<ortaktablo> toplamtablo { get; set; }
}
控制器:
var secim = (from saat_veri in db.saatler
join per_veri in db.personeller on saat_veri.personel.id equals per_veri.id
select new ortaktablo { p_isim = per_veri.isim, p_soyisim = per_veri.soyisim, p_girissaati = saat_veri.girissaati, p_cikissaati = saat_veri.cikissaati });
var Model = new ortaktablo { toplamtablo = secim.ToList() };
return View(Model);
查看:
@model List<PersonelGiriş_MVC.Models.ortaktablo>
@if (Model != null)
{
foreach (var item in Model)
{
<tr class="info">
<td>@Html.DisplayFor(i => item.p_isim)</td>
<td>@Html.DisplayFor(i => item.p_soyisim)</td>
<td>@Html.DisplayFor(i => item.p_girissaati)</td>
<td>@Html.DisplayFor(i => item.p_cikissaati)</td>
</tr>
}
}
您将单个对象作为模型传递给视图,而您的视图是强类型集合。您需要更改视图或操作以匹配类型。看起来要传递一个对象。
将视图代码更改为:
@model PersonelGiriş_MVC.Models.ortaktablo
@if (Model != null)
{
<tr class="info">
<td>@Html.DisplayFor(i => ip_isim)</td>
<td>@Html.DisplayFor(i => i.p_soyisim)</td>
<td>@Html.DisplayFor(i => i.p_girissaati)</td>
<td>@Html.DisplayFor(i => i.p_cikissaati)</td>
</tr>
}
This is how you create the model you pass
var Model = new ortaktablo { toplamtablo = secim.ToList() };
so you need to useModel.toplamtablo
in your foreach because that is where your list are set
foreach (var item in Model.toplamtablo)
{
<tr class="info">
<td>@Html.DisplayFor(i => item.p_isim)</td>
<td>@Html.DisplayFor(i => item.p_soyisim)</td>
<td>@Html.DisplayFor(i => item.p_girissaati)</td>
<td>@Html.DisplayFor(i => item.p_cikissaati)</td>
</tr>
}