Функция поиска с несколькими вариантами поиска с использованием Asp. net core mvc - PullRequest
0 голосов
/ 18 января 2020

Я пытаюсь добавить несколько опций для функции поиска в моем проекте. Я знаю, что простой поиск будет выглядеть так:

<form asp-controller="User" asp-action="search">
      <input type="text" name="search"/>
      <button class="btn btn-primary" id="searchBtn">SÖK</button>
</form>

, а контроллер будет выглядеть так:

public class User : Controller
{
    public IActionResult Search(string search = null)
        {
            IEnumerable<User> users;
            if (!string.IsNullOrEmpty(search))
            {
                users = _users.GetAllUsers().Where(s => s.Email.ToLower().Contains(search.ToLower()));

            }
            else
            {
                users = _users.GetAllUsers();
            }
            return View("index", users);
        }
}

Но я пытаюсь сделать это добавить возможность указать поиск Поле Например: Адрес электронной почты или По имени. Чего я хочу добиться - это добавить DropDownList, чтобы добавить возможность выбирать, какое поле просматривать. Действие будет выглядеть примерно так:

public IActionResult Search(string search = null, string field = null)
        {
            IEnumerable<User> users;
            if (!string.IsNullOrEmpty(search))
            {
                 if (!string.IsNullOrEmpty(field))
                    {
                        if(field == "ByEmail")
                        {
                           //I'll modify this to not get all rows from the database, but wrote it 
                           //like that for simplicity 
                           users = _users.GetAllUsers().Where(s => s.Email.ToLower().Contains(search.ToLower()));
                        }
                        else if(field =="ByName")
                        {
                           users = _users.GetAllUsers().Where(s => s.Name.ToLower().Contains(search.ToLower()));
                        }

                   }
                   else
                   {
                       users = _users.GetAllUsers();
                   }
            else
            {
                users = _users.GetAllUsers();
            }
            return View("index", users);
        }

Но как реализовать этот сценарий в представлении? Как передать несколько параметров с помощью формы в представлении в контроллер? Спасибо.

1 Ответ

0 голосов
/ 18 января 2020

Неважно, я понял это. Вид будет таким:

@using (Html.BeginForm("Search", "User"))
       {
          <input type="text" name="search"/>
          <select class="form-control" name="field">
              <option value="Name">Name</option>
              <option value="EmailAddress">Email Address</option>
          </select>
           <button class="btn btn-primary" id="searchBtn">Search</button>
       }

И действие будет таким же (как я написал в вопросе). Все дело в добавлении имени для типа ввода , которое должно соответствовать имени в действии , и оно будет перенаправлено в действие. Большое спасибо.

...