显示项目详细信息Asp.net MVC

时间:2020-05-19 10:48:43

标签: asp.net model-view-controller view model controller

在我的主视图中,我有一个遍历所有患者的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关联的项目详细信息?

1 个答案:

答案 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);
}

有关更多信息,请参见以下参考资料: