如何创建一个搜索栏,让您搜索数据库中的所有不同字段?

时间:2017-02-03 18:26:17

标签: c# asp.net-mvc

例如,在我的主页/索引页面上,我在数据库中显示信息。我想创建一个搜索栏,让我搜索与我的搜索匹配的所有值。

e.g。数据库有员工,工资和ID。我选择员工搜索按钮并搜索" Bob"。搜索将向我显示名为Bob的所有员工。

我现在拥有它,以便我可以从我的HomeController将数据库中的所有内容显示到我的index.cshtml。我可以做简单的搜索,比如

public ActionResult Index(string employeeName){
//If employeeName, I return employeeName
//else I return something else}

但我不确定如何搜索多个字段并返回它们。我知道我不能使用重载的ActionResults,因此我尝试使用[ActionName]并使用不同的参数创建不同的Index方法,但搜索不起作用。我也没有使用ADO.NET实体模型,因为我试图在没有实现实体模型的现有代码中执行此操作。

编辑 - 家庭控制器

public class HomeController : Controller{

    public ActionResult NameSearch(string EmployeeName)
    { //code to display JUST employee's name that matches the Employee variable} 
    public ActionResult SalarySearch(double salary)
    { //code to display JUST employee's sthat matches the salary variable} 
    public ActionResult Index()
    {
      //return View(model); the model has all the data that will be displayed in index.cshtml
    }

index.cshtml -

<h2>Employee</h2>

<form action="/" method="get">
<input type="text" name="EmployeeName" />
<input type="submit" value="Search" />
</form>

<h3>Search Salary</h3>

<form action="/" method="get">
     <input type="text" name="salary" />
    <input type="submit" value="Search" />
</form>

所以有多个搜索框。如果我搜索&#34; bob&#34;在Employee搜索中我想返回所有匹配的名称。但我不确定我是否会这样做,

最终编辑 -

我通过在Index.cshtml

中使用类似的东西来完成这项工作
<p>

    @using (Html.BeginForm("serialDisplay", "Home", FormMethod.Get))
    {
    <p>
        serial Number: @Html.TextBox("serialNumber") <br />
        <input type="submit" value="Search" />
    </p>
    }
</p>

1 个答案:

答案 0 :(得分:0)

也许我现在明白这个问题。您真的更关心Controller方法签名上的参数,而不是如何在控制器中执行内部逻辑,对吗?

您是否知道参数可以默认为null或其他合理的值,如果它们没有被传入?

public ActionResult Index( int? id = null, string employeeName = null,double? salary = null){
// if id != null, add it to the where clause.
// if employeeName != null or white space, add it to the where clause (most browsers will send it as "" if the user doesn't enter anything). 
// if salary != null, add it to the where clause, you probably actually want a salaryMin and salaryMax

}

这是处理可选参数的最简单方法,您可以使用自定义模型绑定器执行更多操作。您还可以使用Routes来根据提供的参数向您发送不同命名的方法。它还允许您构建事物,以便您可以执行工资和名称。

编辑:指向MS文档的链接https://msdn.microsoft.com/en-us/library/dd264739.aspx#Optional参数