我试图只显示搜索结果,而不是整个数据库。
这是我的控制器:
public async Task<ActionResult> Index(string searchString)
{
var asset = from s in db.AssetInventoryTables
select s;
if (!String.IsNullOrEmpty(searchString))
{
asset = asset.Where(s => s.AssetTag.Contains(searchString) ||
s.ECCNNum.Contains(searchString) ||
s.GTag.Contains(searchString) ||
s.ItarNum.Contains(searchString) ||
s.ViperTag.Contains(searchString) ||
s.PartNum.Contains(searchString) ||
s.SerialNum.Contains(searchString) ||
s.SerialNum2.Contains(searchString) ||
s.SerialNum3.Contains(searchString) ||
s.SerialNum4.Contains(searchString) ||
s.SerialNum5.Contains(searchString) ||
s.SchedBCode.Contains(searchString) ||
s.Notes.Contains(searchString) ||
s.Name.Contains(searchString) ||
s.LocationTable.LocNAME.Contains(searchString) ||
s.ITARTable.ItarTYPE.Contains(searchString) ||
s.ProgramTable.ProgNAME.Contains(searchString) ||
s.StatusTable.StatTYPE.Contains(searchString) ||
s.SystemTable.SysNAME.Contains(searchString)
);
}
var assetinventorytables = db.AssetInventoryTables.Include(a => a.ITARTable).Include(a => a.LocationTable).Include(a => a.LocationTable1).Include(a => a.MoveTable).Include(a => a.ProgramTable).Include(a => a.RMATable).Include(a => a.ShipProviderTable).Include(a => a.ShipStatusTable).Include(a => a.SiteLocationTable).Include(a => a.StatusTable).Include(a => a.SystemTable).Include(a => a.TransferTable);
//return View(await assetinventorytables.ToListAsync());
return View(asset);
}
我正在尝试搜索多个字段。 这是我的index.cshtml
<h2>Index</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
@using (Html.BeginForm("Index", "Movement2", FormMethod.Get))
{
<p>
Search: @Html.TextBox("searchString")
<input type="submit" value="Search" />
</p>
if ("searchString" != null)
{
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.Name)
</th>
<th>
@Html.DisplayNameFor(model => model.ViperTag)
</th>
<th>
@Html.DisplayNameFor(model => model.PartNum)
</th>
<th>
@Html.DisplayNameFor(model => model.SerialNum)
</th>
<th>
@Html.DisplayNameFor(model => model.Notes)
</th>
<th>
@Html.DisplayNameFor(model => model.LocationTable.LocNAME)
</th>
<th>
@Html.DisplayNameFor(model => model.ProgramTable.ProgNAME)
</th>
<th>
@Html.DisplayNameFor(model => model.StatusTable.StatTYPE)
</th>
<th>
@Html.DisplayNameFor(model => model.SystemTable.SysNAME)
</th>
<th></th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.ViperTag)
</td>
<td>
@Html.DisplayFor(modelItem => item.PartNum)
</td>
<td>
@Html.DisplayFor(modelItem => item.SerialNum)
</td>
<td>
@Html.DisplayFor(modelItem => item.Notes)
</td>
<td>
@Html.DisplayFor(modelItem => item.LocationTable.LocNAME)
</td>
<td>
@Html.DisplayFor(modelItem => item.ProgramTable.ProgNAME)
</td>
<td>
@Html.DisplayFor(modelItem => item.StatusTable.StatTYPE)
</td>
<td>
@Html.DisplayFor(modelItem => item.SystemTable.SysNAME)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id = item.AssetID }) |
@Html.ActionLink("Details", "Details", new { id = item.AssetID }) |
@Html.ActionLink("Delete", "Delete", new { id = item.AssetID })
</td>
</tr>
}
</table>
}
}
这里是我试图阻止页面加载时显示所有记录的地方。所有我想看到的是搜索框,一旦搜索框有一个值并提交,它将只显示搜索结果。这就是为什么我使用IF语句,但它仍然显示页面加载的所有记录。我很难过。
答案 0 :(得分:0)
你需要有两种行动方法
搜索按钮 POST 数据不 FormMethod.Get
当ModelCount为0
时隐藏表格