Как я могу изменить выпадающий контент - PullRequest
0 голосов
/ 27 июня 2019

Я пытаюсь сделать раскрывающийся фильтр содержимого в ASP.NET MVC.Я хочу, чтобы в раскрывающемся меню отображались три статуса градации (Graduated, Pass, Failed) и чтобы при выборе одного из них отображался только студент с выбранным статусом!

Вот снимок экрана с тем, что я вижу сейчас:

Index page with dropdown

Контроллер:

ViewBag.GraduationStatus = new SelectList(db.Graduated_Students, "Graduated Status");

var graduates = db.Graduated_Students.Where(student => student.GraduationStatus != null);
return View(graduates.ToList());

Вид:

@using (Html.BeginForm())
{
    <table>
        <tr>
            <th>
                @Html.DropDownList("GraduationStatus", null, htmlAttributes: new { @class = "form-control" })
            </th>
            <th>
                <input type="submit" value="Filter by graduation Status" />
            </th>
        </tr>
    </table>
}

Модель:

namespace CodeboxxSchoolPortal
{
    using System;
    using System.ComponentModel.DataAnnotations;
    using System.Collections.Generic;

    public partial class Graduated_Students
    {
        public int ID { get; set; }
        public int CohortId { get; set; }
        public string GraduationStatus { get; set; }
        public string Name { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string ContractStatus { get; set; }
        public string DepositStatus { get; set; }
        public Nullable<int> PartnerId { get; set; }
        public string PartnerName { get; set; }


            public List<SelectListItem> GraduationStatusList = new List<SelectListItem>
            {
                 new SelectListItem { Value="Graduated", Text="Graduated" },
                 new SelectListItem { Value ="Pass", Text="Pass" },
                 new SelectListItem { Value ="Failed", Text="Failed" }
            };

        public class SelectListItem
        {
            public string Value { get; set; }
            public string Text { get; set; }
        }

    }
}

1 Ответ

0 голосов
/ 29 июня 2019

Это то, что, я думаю, тебе следует сделать,

, если Action в контроллере равно GetStudents, а в раскрывающемся списке есть значения в виде строки (статус окончания), передайте его контроллеру при нажатии кнопки фильтра

 [HttpPost]
 public ActionResult Documents(string? graduationStatus)
 {
     var graduates = db.Graduated_Students.Where(student => student.GraduationStatus == graduationStatus);
     return View(graduates.ToList());
 }

Обратите внимание, что string? graduationStatus должен быть того же типа, что и student.GraduationStatus в базе данных

Также убедитесь, что Html.BeginForm() имеет правильное действие для контроллера

@Html.BeginForm("GetStudents", "Controller", FormMethod.Post, new { @class = "my_form"})

EDIT:

Измените строку ниже на

@Html.DropDownList("GraduationStatus", new SelectList(ViewBag.GraduationStatus, "Value Here", "Text Here", null), "- Select -", new { @class = "form-control"})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...