如何在1个视图中合并2个表 这是我的模特。
namespace ProfileApplication.Models
{
using System;
using System.Collections.Generic;
public partial class EMP
{
public string EMP_ID { get; set; }
public string EMP_NAME { get; set; }
public string EMP_LNAME { get; set; }
}
public partial class X_EMP_MAIL
{
public string EMP_ID { get; set; }
public string EMAIL { get; set; }
}
这是我的Controtller。
public class profileController : Controller
{
//
// GET: /profile/
ProfileEntities db = new ProfileEntities();
public ActionResult Index()
{
return View(db.EMP.ToList());
}
public ActionResult detail(string id = null)
{
var query = from EMP in db.EMP
join X_EMP_MAIL in db.X_EMP_MAIL on EMP.EMP_ID
equals X_EMP_MAIL.EMP_ID
where X_EMP_MAIL.EMP_ID == EMP.EMP_ID
select new joinproflie
{
EMP_ID = EMP.EMP_ID,
EMP_NAME = EMP.EMP_NAME,
EMP_LNAME = EMP.EMP_LNAME,
EMAIL = X_EMP_MAIL.EMAIL
};
if (query == null)
{
return HttpNotFound();
}
return View(query);
}
这是我的观点
@model IEnumerable<ProfileApplication.Models.EMP>
@foreach (var item in Model)
{
<tr>
<td>@item.EMP_ID </td>
<td>@item.EMP_NAME </td>
<td>@item.EMP_LNAME </td>
<td>@item.EMAIL </td>
<!-- -->
</tr>
<br/>
}
我该怎么办?
答案 0 :(得分:1)
您可以再创建一个viewmodel类来组合两个视图模型:
public partial class EMP_Details
{
public string EMP_ID { get; set; }
public string EMP_NAME { get; set; }
public string EMP_LNAME { get; set; }
public string EMAIL { get; set; }
}
在控制器上将其更改为返回EMP_Details
viewmodel。如
public ActionResult detail(string id = null)
{
var query = from EMP in db.EMP
join X_EMP_MAIL in db.X_EMP_MAIL on EMP.EMP_ID
equals X_EMP_MAIL.EMP_ID
where X_EMP_MAIL.EMP_ID == EMP.EMP_ID
select new EMP_Details
{
EMP_ID = EMP.EMP_ID,
EMP_NAME = EMP.EMP_NAME,
EMP_LNAME = EMP.EMP_LNAME,
EMAIL = X_EMP_MAIL.EMAIL
};
if (query == null)
{
return HttpNotFound();
}
return View(query);
}
在视图上将ViewModel Name更改为:
@model IEnumerable<ProfileApplication.Models.EMP_Details>
你完成了!
答案 1 :(得分:0)
您可以创建包含EMP_ID,EMP_NAME,EMP_LNAME和EMAIL属性的模型类,也可以使用dynamic作为模型。