Почему не работает операция поиска в mvc? - PullRequest
0 голосов
/ 01 ноября 2018

Я застрял в этой проблеме с нескольких часов. Когда я нажимаю кнопку подтверждения, она не отвечает. Просто обновляет страницу.

контроллер для индекса

public ActionResult Index()
{
    return View(db.Students.ToList());
}

[HttpGet,ActionName("Index")]
public ActionResult SearchIndex(string option, string search)
{
    if (option == "Name")
    {
        var a = db.Students.Where(x => x.StudentName == search || search == null);

        return View(a.ToList());
    }
    else if (option == "Gender")
    {
        return View(db.Students.Where(x => x.Gender == search).ToList());
    }
    else
    {
        return View(db.Students.Where(x => x.RegNo == search || search == null).ToList()) 
    }
}

Индекс

@using(Html.BeginForm("Index","Student",FormMethod.Get)){
    <div id="search">
        <b>Search By:</b>@Html.RadioButton("option","Name")<b>Name</b>
        @Html.RadioButton("option","Gender")<b>Gender</b>
        @Html.RadioButton("option","Dept")<b>Dept</b>
        @Html.RadioButton("option","RegNo")<b>RegNo</b>
        <input type="text" name="text" />
        <input type="submit"  name="submit" value="Search" class="btn btn-default"/>
    </div>
}

Что можно сделать, чтобы решить проблему?

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Я думаю, этот код может дать больше результатов

public ActionResult SearchIndex(string search)
{
var students = from s in db.Students
                   select s;
    if (!String.IsNullOrEmpty(search))
    {
        students = students.Where(s => s.StudentName.Contains(search)
                               || s.Gender.Contains(search));
    }
return View(students.ToList());

}

Я не знаю ваших требований, но когда вы ищете данные в БД, вам нужно только одно или два свойства из этих данных.

@using(Html.BeginForm("Index","Student",FormMethod.Get)){
    <div id="search">
        <input type="text" name="search" />
        <input type="submit"  name="submit" value="Search" class="btn btn-default"/>
    </div>
}
0 голосов
/ 01 ноября 2018

Создать POST. GET используется для запроса данных. Вы пытаетесь отправить данные обратно (параметры поиска), для которых требуется отправить обратно.

 [HttpGet]
 public ActionResult SearchIndex()
    {
        return View();
    }

[HttpPost,ActionName("Index")]
 public ActionResult SearchIndex(string option, string search)
    {
      if (option == "Name")
      {
        var a = db.Students.Where(x => x.StudentName == search || search == null);

        return View(a.ToList());
      }
      else if (option == "Gender")
      {
        return View(db.Students.Where(x => x.Gender == search).ToList());

      }
      else
      {
        return View(db.Students.Where(x => x.RegNo == search || search == null).ToList()) 
      }
    }

HTML также необходимо обновить, чтобы использовать FormMethod.Post при использовании.

 @using (Html.BeginForm("Index", "Student", FormMethod.Post, new { encType = "multipart/form-data" }))

EDIT Во-вторых, я думаю, что вам нужно только multipart / form-data, добавленные в ваш HTML.

@using (Html.BeginForm("Index", "Student", FormMethod.Get, new { encType = "multipart/form-data" }))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...