【问题标题】:Showing details of an item Asp.net MVC显示项目的详细信息 Asp.net MVC
【发布时间】:2020-09-05 09:47:21
【问题描述】:

在我的主视图中,我有一个循环遍历所有患者的 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>

如果我再添加一个&lt;div&gt;&lt;/div&gt;

<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>

&lt;/tbody&gt; 标记之后,如何显示与我的@patient.Id 关联的项目详细信息?

【问题讨论】:

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


【解决方案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);
}

有关更多信息,请参阅这些参考资料:

【讨论】:

  • 这很好用!对于将来使用此代码的任何人,请确保您从控制器返回正确类型的 ViewModel。谢谢你塞利姆!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多