在我的主视图中,我有一个遍历所有患者的foreach循环
<tbody>
@foreach (var patient in Model.Patients)
{
<tr>
<td>@Html.DisplayFor(modelItem => patient.FirstName)</td>
<td>@Html.DisplayFor(modelItem => patient.LastName)</td>
<td>@Html.DisplayFor(modelItem => patient.PersonalID)</td>
<td>
<a asp-action="Edit" asp-route-id="@patient.Id" class="btn btn-success"><i class="glyphicon glyphicon-pencil"></i> Edit</a>
<a onclick="showDetails()" class="btn btn-success"><i class="glyphicon glyphicon-pencil"></i> Detail</a>
<form asp-action="DeleteUser" asp-route-id="@patient.Id" method="post" style="display: inline;">
<button class="btn btn-danger">
Delete
</button>
</form>
</td>
</tr>
}
</tbody>
如果我添加另一个<div></div>
<div class="col-9 detailPatient" style="color:black;">
@foreach (var doctor in Model.Doctors)
{
if (doctor.Id == patient.Id) <--------------- How do I get this patient.Id when someone clicks on the Details button. Do I need a partial View?
{
<td>@Html.DisplayFor(modelItem => doctor.FirstName)</td>
<td>@Html.DisplayFor(modelItem => doctor.LastName)</td>
<td>@Html.DisplayFor(modelItem => doctor.GodineIskustva)</td>
}
}
</div>
在</tbody>
标记之后,如何显示与我的@patient.Id
关联的项目详细信息?
答案 0 :(得分:1)
您需要使用PartialView
加载详细信息。这是其工作原理的完整示例:
首先,您需要创建新的局部视图:
@foreach (var doctor in Model.Doctors)
{
<td>@Html.DisplayFor(modelItem => doctor.FirstName)</td>
<td>@Html.DisplayFor(modelItem => doctor.LastName)</td>
<td>@Html.DisplayFor(modelItem => doctor.GodineIskustva)</td>
}
在控制器中,我假设您有按患者找医生的方法:
// GET: Doctor/DetailsByPatientId/5
public ActionResult DetailsByPatientId(int id)
{
List<Doctor> doctors = new List<Doctor>()
{
new Doctor(){ FirstName ="doctor 1"},
new Doctor(){ FirstName ="doctor 2"}
};
return PartialView("_DoctorsByPatient", doctors);
}
最后在您的主要患者视图中,将PatientId
传递给showDetail
函数:
<a onclick="showDetails(@patient.PersonalID);" class="btn btn-success"><i class="glyphicon glyphicon-pencil"></i> Detail</a>
然后使用JQuery加载局部视图:
function showDetails(patientId) {
$('.detailPatient').load("/Doctor/DetailsByPatientId/" + patientId);
}
有关更多信息,请参见以下参考资料: