【发布时间】:2018-11-28 15:50:04
【问题描述】:
我有一个用 C# ASP.NET 实现的设备管理应用程序,我也在我的应用程序中实现了搜索和排序功能。
我的问题是我无法对搜索结果进行排序,而不是在单击名称后(按名称对结果进行排序),它会对所有设备进行排序,而不仅仅是搜索结果。
在这个控制器中,我展示了没有所有者的设备(UserID == null)
这是我的控制器:
public ActionResult deviceList(String sortBy, String search)
{
if (Session["userID"] != null)
{
ViewBag.SortNameParameter = String.IsNullOrEmpty(sortBy) ? "Name desc" : "";
ViewBag.SortTypeParameter = sortBy == "Type" ? "Type desc" : "Type";
ViewBag.SortManufacturerParameter = sortBy == "Manufacturer" ? "Manufacturer desc" : "Manufacturer";
var devices = db.devices.AsQueryable();
if (devices.Any(x => x.UserID == null))
{
devices = db.devices.Where(x => x.UserID == null);
switch (sortBy)
{
case "Name desc":
devices = devices.Where(x => x.DName.Contains(search)).OrderByDescending(x => x.DName);
break;
...
default:
devices = devices.Where(x => x.DName.Contains(search)).OrderBy(x => x.DName);
break;
}
return View(devices.ToList());
}
缺件按类型、制造商等排序相同
这是我的观点:
@using (Html.BeginForm("deviceList", "devices", FormMethod.Get))
{
<label>
<b>Search:</b>
@Html.TextBox("Search")
<input type="submit" value="Search" />
</label>
}
</div>
<table class="table table-striped custab">
<thead>
<tr>
<th align="center">
@Html.ActionLink("Name", "deviceList", new { sortBy = ViewBag.SortNameParameter })
</th>
<th>
@Html.ActionLink("Manufacturer", "deviceList", new { sortBy = ViewBag.SortManufacturerParameter })
</th>
<th>
@Html.ActionLink("Type", "deviceList", new { sortBy = ViewBag.SortTypeParameter })
</th>
<th>
@Html.DisplayNameFor(model => model.DOS)
</th>
<th>
@Html.DisplayNameFor(model => model.DOSVersion)
</th>
<th>
@Html.DisplayNameFor(model => model.DProcessor)
</th>
<th align="center">
@Html.DisplayNameFor(model => model.DRAM)
</th>
<th>
@Html.DisplayNameFor(model => model.user.userName)
</th>
<th>Action</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.DName)
</td>
<td>
@Html.DisplayFor(modelItem => item.DManufacturer)
</td>
<td>
@Html.DisplayFor(modelItem => item.DType)
</td>
<td>
@Html.DisplayFor(modelItem => item.DOS)
</td>
<td>
@Html.DisplayFor(modelItem => item.DOSVersion)
</td>
<td>
@Html.DisplayFor(modelItem => item.DProcessor)
</td>
<td>
@Html.DisplayFor(modelItem => item.DRAM)
</td>
<td>
@Html.DisplayFor(modelItem => item.user.userName)
</td>
搜索功能很好用,但是在搜索结果之后,如果我单击名称(进行排序),来自 URL 的搜索参数就会消失,它将对我的整个列表而不是搜索结果进行排序。
请帮我找出我的错。
【问题讨论】:
标签: c# asp.net asp.net-mvc sorting search