使用Asp.net core mvc的多搜索选项搜索功能
我正在尝试向项目中的搜索功能添加多个选项。 我知道简单的搜索结果如下:使用Asp.net core mvc的多搜索选项搜索功能,asp.net,asp.net-mvc,asp.net-core,razor-pages,Asp.net,Asp.net Mvc,Asp.net Core,Razor Pages,我正在尝试向项目中的搜索功能添加多个选项。 我知道简单的搜索结果如下: <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 :
<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);
}
}
@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>
}
SÖK
控制器将类似于:
<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);
}
}
@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>
}
公共类用户:控制器
{
公共IActionResult搜索(字符串搜索=null)
{
i无数用户;
如果(!string.IsNullOrEmpty(搜索))
{
users=\u users.GetAllUsers()。其中(s=>s.Email.ToLower()。包含(search.ToLower());
}
其他的
{
users=_users.GetAllUsers();
}
返回视图(“索引”,用户);
}
}
但我想做的是添加指定搜索字段的功能,如:电子邮件地址或按名称。
我想要实现的是添加一个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);
}
公共IActionResult搜索(字符串搜索=null,字符串字段=null)
{
i无数用户;
如果(!string.IsNullOrEmpty(搜索))
{
如果(!string.IsNullOrEmpty(字段))
{
如果(字段==“通过电子邮件”)
{
//我将对此进行修改,以不从数据库中获取所有行,而是编写它
//为了简单起见,我喜欢那样
users=\u users.GetAllUsers()。其中(s=>s.Email.ToLower()。包含(search.ToLower());
}
else if(字段==“按名称”)
{
users=\u users.GetAllUsers()。其中(s=>s.Name.ToLower().Contains(search.ToLower());
}
}
其他的
{
users=_users.GetAllUsers();
}
其他的
{
users=_users.GetAllUsers();
}
返回视图(“索引”,用户);
}
但如何在视图中实现此场景?
如何通过视图中的窗体将多个参数传递给控制器?
谢谢。没关系,我知道了。 视图将类似于:
<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);
}
}
@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>
}
@使用(Html.BeginForm(“搜索”、“用户”))
{
名称
电子邮件地址
搜索
}
而行动将是相同的(正如我在问题中所写的)。
这一切都是关于为输入类型添加一个名称,该名称应与操作中的名称相匹配,并将其转发给操作。
非常感谢