Javascript 创建搜索栏c#MVC

Javascript 创建搜索栏c#MVC,javascript,c#,asp.net,asp.net-mvc,entity-framework,Javascript,C#,Asp.net,Asp.net Mvc,Entity Framework,我正在尝试在我的MVC应用程序中创建一个搜索栏。我有下面的型号 public class Project { public int projectID { get; set; } public int customerID { get; set; } public int departmentID { get; set; } public string projectName { get; set; } public int employeeID

我正在尝试在我的MVC应用程序中创建一个搜索栏。我有下面的型号

    public class Project
{
    public int projectID { get; set; }
    public int customerID { get; set; }
    public int departmentID { get; set; }
    public string projectName { get; set; }
    public int employeeID { get; set; }
}
我想在我的索引视图中创建一个搜索栏,允许用户通过输入projectID或projectName来搜索项目列表。到目前为止,我已经在projectName上搜索了它,但我不确定如何(或者是否可能)按ID搜索,或者同时按ID和/或两者搜索。 这是“我的索引”视图中的搜索栏:

   @using (Html.BeginForm())
{
<p>
    Name  : @Html.TextBox("SearchName")<br />
    <input type="submit" value="Search" />
</p>
}

任何建议或帮助都将不胜感激!感谢在Where子句中使用OR运算符

您可以利用Simple或
|
运算符在子句中的单个查询中测试一个或多个属性:

处理不同的类型

同样,如果你有不同类型的多个属性,如果可能的话,你可以考虑解析你的术语:

if(!String.IsNullOrEmpty(searchName))
{
    // Normal search term
    var term = searchName;
    // Attempt to parse it as an integer
    var integerTerm = -1;
    Int32.TryParse(searchName, out integerTerm);
    // Now search for a contains with the term and an equals on the ID
    projects = projects.Where(p => p.projectName.Contains(term) || p.projectId == integerTerm);
}

您可以使用同一个框并在查询中选中这两个值吗<代码>项目=项目。其中(c=>c.projectName.Contains(searchName)| | c.projectID==searchNameInt)?(创建新的int var并尝试将searchname强制转换为int)
public ActionResult Index(string searchName)
{
      // Current projects
      var projects = db.Projects;
      // Filter down if necessary
      if(!String.IsNullOrEmpty(searchName))
      {
          projects = projects.Where(p => p.projectName.Contains(searchName) || p.projectName.Contains(searchName));
      }
      // Pass your list out to your view
      return View(projects.ToList());
  }
if(!String.IsNullOrEmpty(searchName))
{
    // Normal search term
    var term = searchName;
    // Attempt to parse it as an integer
    var integerTerm = -1;
    Int32.TryParse(searchName, out integerTerm);
    // Now search for a contains with the term and an equals on the ID
    projects = projects.Where(p => p.projectName.Contains(term) || p.projectId == integerTerm);
}