Javascript 创建搜索栏c#MVC
我正在尝试在我的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
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);
}