【问题标题】:How can I filter data in a Razor view with a dropdown如何使用下拉列表过滤 Razor 视图中的数据
【发布时间】:2019-06-27 04:40:26
【问题描述】:

您好,我是 MVC 新手,我正在尝试对我的索引页面进行过滤,我希望能够过滤毕业状态。

因此,当我进入索引时,我会看到每个状态,并且我想过滤例如具有毕业状态或通过/失败状态的人

提前谢谢你!

Index Page

控制器:

        var graduates = db.Graduated_Students;
        return View(graduates.ToList());

查看:

    <div class="content-body">
             <div class="row">
                 <form action="#" method="post">
              <div class="col-xs-12 col-sm-9 col-md-12">

                <table class="table">
                    <tr>
                        <th>
                            @Resource.FirstName
                        </th>
                        <th>
                            @Resource.LastName
                        </th>
                        <th>
                            @Resource.CohortNumber
                        </th>
                        <th>
                            Placements
                        </th>
                        <th>
                            @Resource.GraduationStatus
                        </th>

                    </tr>
                    @foreach (var item in Model)
                    {
                        <tr>
                            <td>
                                @Html.DisplayFor(modelItem => 
                                          item.FirstName)
                            </td>
                            <td>
                                @Html.DisplayFor(modelItem => 
                                             item.LastName)
                            </td>
                            <td>
                                @Html.DisplayFor(modelItem => item.Name)
                            </td>
                            <td>
                                @Html.DisplayFor(modelItem => 
                                            item.PartnerName)
                            </td>
                            <td>
                                @Html.DisplayFor(modelItem => 
                                 item.GraduationStatus)
                            </td>

【问题讨论】:

    标签: c# html razor model-view-controller


    【解决方案1】:

    您可以在视图中使用 linq 来过滤数据

    在视图中

    @foreach (var item in Model.Where(t=> t.GraduationStatus == <the graduation status selected in the dropdown> );
    

    这种方式从数据库中获取所有数据,然后进行过滤

    这种方法可行,但更好的方法是将 Selected GraduationStatus 作为参数发送到控制器,然后直接对 db 变量执行过滤

    在控制器中

    public IActionResult GeStudents(GraduationStatus selectedGraduationStatus) 
    {
        var graduates = db.Graduated_Students.Where(t=> t.GraduationStatus == selectedGraduationStatus);
        return View(graduates.ToList());
    }
    

    这样您就不会从数据库中获取所有学生,而只会获取与过滤器匹配的学生

    【讨论】:

    • 感谢您的帮助!!你是什​​么意思我应该输入这个? :
    • 从下拉列表中选择的毕业状态变量。
    • 我似乎无法让它工作......我可能在这里做错了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-30
    • 2018-08-09
    相关资源
    最近更新 更多