我尝试了这样的代码,效果很好:
查看:
@model IEnumerable<InternProject.Models.Course>
....
@Html.ActionLink("Create New", "Create")
@using (Html.BeginForm("Index", "Course", FormMethod.Get))
{
<p>
@Html.TextBox("searching")
<input type="submit" value="search" />
</p>
}
<table class="table table-striped">
<thead>
<tr>
<th>Course ID</th>
<th>Course Name</th>
<th>Major</th>
<th>Specialization</th>
<th></th>
</tr>
</thead>
@foreach (var item in Model) {
<tr>
<td>@Html.DisplayFor(modelItem => item.crs_ID)</td>
<td>@Html.DisplayFor(modelItem => item.crs_Course)</td>
<td>@Html.DisplayFor(modelItem => item.crs_Major)</td>
<td>@Html.DisplayFor(modelItem => item.crs_Specialization)</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id = item.crs_ID }) |
@Html.ActionLink("Details", "Details", new {id = item.crs_ID }) |
@Html.ActionLink("Delete", "Delete", new { id = item.crs_ID })
</td>
</tr>
}
</table>
控制器:
public class CourseController : Controller
{
private DbCourse db = new DbCourse();
public ActionResult Index(string submit, string searching)
{
var course = from x in db.Course select x;
if (!String.IsNullOrWhiteSpace(searching))
{
return View(db.Course.Where(x => x.crs_Course.Contains(searching.Trim()) ||
x.crs_Major.Contains(searching.Trim()) ||
x.crs_Specialization.Contains(searching.Trim())).ToList());
}
else if (searching == null)
{
return View(db.Course.Where(x => x.crs_Course == searching || searching.Trim() == null).ToList());
}
else
{
return View(db.Course.ToList());
}
}
}
但是id
不能包括在内,因为它是一个整数。我想要一个解决方案,我可以在我的数据库的id
中搜索,具体取决于搜索框中的输入。
此外,对于像这样的简单搜索功能,是否有比这更好的代码?我注意到它太长了,显然违反了DRY原则。
我作为初学者在ASP.NET MVC中采取了我的步骤。
我希望通过应用编码来提高我的知识,而不仅仅是依靠教程视频 非常感谢你提前! =)
答案 0 :(得分:1)
最简单的解决方案是将ID转换为字符串。您的代码将成为以下内容。
return View(db.Course.Where(x => x.crs_Course.Contains(searching.Trim()) ||
x.crs_Major.Contains(searching.Trim()) ||
x.crs_Specialization.Contains(searching.Trim()) ||
x.crs_crs_ID.ToString().Contains(searching.Trim())).ToList())
这不违反DRY原则,因为你在不同的变量上使用Contains();然而,反对DRY原则的是重复搜索.Trim()。我建议你在代码顶部修剪一次字符串。
var match = searching.Trim();
然后你可以在下面的代码中使用match而不是search.Trim()。