【发布时间】:2016-08-05 11:52:51
【问题描述】:
我正在使用实体框架在 ASP.NET MVC 中工作。我的数据库中有两个表,AppointmentDb 和 StudentDb。我希望将它们加入控制器并将结果传递给控制器中的另一个操作方法。我在Details 操作中传递的这个新表的返回类型是什么?
public ActionResult Index(AdminViewModel model)
{
if (ModelState.IsValid)
{
var innerJoinQuery = from appointment in AppointmentDb
join student in StudentDb on appointment.StudentFirstName equals student.FirstName
select appointment;
return View("Details",innerJoinQuery);
}
}
public ActionResult Details(?????? innerJoinQuery)
{
return View();
}
编辑 1:
根据下面的答案,我编辑为:
public ActionResult Details(IQueryable<Appointment> appointment)
{
return View(appointment);
}
我仍然无法根据需要调用下面的列。其中一些像AppointmentID 来自AppointmentDb,其余来自StudentDb
下面是Details.cshtml的视图:
@model IQueryable<OdeToFood.Entities.Appointment>
@{
ViewBag.Title = "Details";
}
<h2>Index</h2>
@Html.ActionLink("Back to Search", "Index")
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.AppointmentID)
</th>
<th>
@Html.DisplayNameFor(model => model.StudentFirstName)
</th>
<th>
@Html.DisplayNameFor(model => model.)
</th>
<th>
@Html.DisplayNameFor(model => model.StudentID)
</th>
<th>
@Html.DisplayNameFor(model => model.AppointmentDate)
</th>
<th>
@Html.DisplayNameFor(model => model.AppointmentTime)
</th>
<th>
@Html.DisplayNameFor(model => model.Status)
</th>
</tr>
</table>
我应该如何使View 工作?
编辑 2:
我已按照编辑 1 中的建议进行了编辑。我的完整 View.cshtml 中还有另一个小错误。这是我收到的错误foreach cannot operate on Variables of type OdeToFood.ViewModels.AdminDetailsViewModel because it does not contain definition for GetEnumerator
@model AdminDetailsViewModel
@{
ViewBag.Title = "Details";
}
<h2>Index</h2>
@Html.ActionLink("Back to Search", "Index")
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.AppointmentID)
</th>
<th>
@Html.DisplayNameFor(model => model.StudentFirstName)
</th>
<th>
@Html.DisplayNameFor(model => model.StudentLastName)
</th>
<th>
@Html.DisplayNameFor(model => model.StudentID)
</th>
<th>
@Html.DisplayNameFor(model => model.AppointmentDate)
</th>
<th>
@Html.DisplayNameFor(model => model.AppointmentTime)
</th>
<th>
@Html.DisplayNameFor(model => model.Status)
</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.AppointmentID)
</td>
<td>
@Html.DisplayFor(modelItem => item.StudentFirstName)
</td>
<td>
@Html.DisplayFor(modelItem => item.StudentLastName)
</td>
<td>
@Html.DisplayFor(modelItem => item.StudentID)
</td>
<td>
@Html.DisplayFor(modelItem => item.AppointmentDate)
</td>
<td>
@Html.DisplayFor(modelItem => item.AppointmentTime)
</td>
<td>
@Html.DisplayFor(modelItem => item.Status)
</td>
</tr>
}
</table>
【问题讨论】:
-
尝试对象或动态
-
自己找出这一点的一种方法是将参数类型指定为 int 或 string,然后查看编译器消息显示的内容。
-
这是讨厌
var被滥用的原因之一,这使得大多数开发人员甚至不会考虑他们正在使用的对象的类型。
标签: c# mysql asp.net asp.net-mvc