レコードを検索できるビューがあります。
MVC。複数の条件で検索する
@using (Html.BeginForm("Index", "Project", FormMethod.Get, new { role = "form" }))
{
<div class="input-group">
<input name="Query" type="text" class="form-control" placeholder="">
<span class="input-group-btn" style="width:0;">
<button class="btn btn-default" type="submit">Search</button>
</span>
</div>
}
@if (Model.Any())
{
<div class="col-md-10">
<table class="table table-striped table-hover">
<tr>
<th>
Year
</th>
<th>
Project
</th>
<th>
Status
</th>
<th>
</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(m => item.PROJ_YEAR)
</td>
<td>
@Html.DisplayFor(m => item.PROJ_NAME)
</td>
<td>
@Html.DisplayFor(m => item.PROJ_STATUS)
</td>
</tr>
}
</table>}
else
{
<p style="margin:20px 0;">No Projects found.</p>
}
と、ここで私が検索を実行すると、それだけでPROJ_NAMEに基づいて検索を実行しますコントローラ
public ActionResult Index(int page = 1, string Query = null)
{
var projectList = db.TBL_PROJECTS.Include(x => x.TBL_STATUS).Where(x => x.PROJ_CAT == 1).ToList().OrderByDescending(x => x.ID);
if (!string.IsNullOrEmpty(Query))
{
projectList = projectList
.Where(x => x.PROJ_NAME.ToLower().Contains(Query.ToLower()))
.ToList().OrderByDescending(x => x.ID);
if (projectList.Count() == 0)
{
var list = db.TBL_PROJECTS.Include(x => x.TBL_STATUS).Where(x => x.PROJ_CAT == 1).ToList().OrderByDescending(x => x.ID);
projectList = list
.Where(x => x.PROJ_YEAR.ToLower().Contains(Query.ToLower()))
.ToList().OrderByDescending(x => x.ID);
}
}
return View(new PagedList.PagedList<TBL_PROJECT>(projectList, page, 15));
}
です。 「PROJ_YEAR」でも検索したいです。 "1998"を検索すると、レコードが見つかりません。 1998年の「Paint Job」を検索すると、レコードが表示されます。
私はこれを試して、代わりにこのエラーを取得します。 {"オブジェクト参照がオブジェクトのインスタンスに設定されていません"} – Waller
あなたのコードでは、いくつかの問題がnull例外をスローする可能性があります。ここでアイデアを試してみましょう。プロジェクト名と年を比較する必要があるということです。たとえば、Query = nullの場合、Query.ToLower()で例外がスローされ、結果がnullの場合、ToList()で例外がスローされます。 –
コントローラコードは更新されましたが、同じエラーが発生しました。いくつかのコード例を表示できますか? – Waller