【发布时间】:2018-03-05 21:18:11
【问题描述】:
我需要有关此代码的帮助
型号:
public class SearchList
{
public string Name { get; set; }
public string className { get; set; }
}
控制器:
[Authorize]
public IActionResult Search(string sortOrder, string currentFilter, string name, int? page, string className)
{
ViewData["CurrentSort"] = sortOrder;
ViewData["NameSortParm"] = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
ViewData["DateSortParm"] = sortOrder == "Date" ? "date_desc" : "Date";
var searchList = FetchList()
if (name != null)
{
page = 1;
}
else
{
name = currentFilter;
}
ViewData["CurrentFilter"] = name;
if (!String.IsNullOrEmpty(name))
{
searchList = searchList.Where(m => m.Name.Contains(name)).ToList();
}
switch (sortOrder)
{
case "name_desc":
searchList = searchList.OrderByDescending(s => s.Name).ToList();
break;
default:
break;
}
int pageSize = 3;
return View(PaginatedList<SearchList>.Create(searchList, page ?? 1, pageSize));
}
public IList<SearchList> FetchList()
{
var searchList = new List<SearchList>();
searchList.Add(new SearchList
{
Name = "Andy",
className = "Class Alpha",
});
searchList.Add(new SearchList
{
Name = "Nando",
className = "Class Beta",
});
searchList.Add(new SearchList
{
Name = "Anrya",
className = "Class Alpha",
});
return searchList;
}
我的观点
<form asp-action="Search">
<div>
<table id="t1" class="table table-bordered table-condensed"> <tr>
<th>
<b>Details</b>
</th>
</tr>
<tr>
<td >
Name
</td>
<td>
<input class="form-control" type="text" name="name" value="@ViewData["currentFilter"]" />
</td>
</tr>
<tr>
<td>
Class Name
</td>
<td>
<input class="form-control" style="width: 200px" type="text" name="classname">
</td>
</tr>
</table>
<div class="form-group">
<input type="submit" value="Search" class="btn btn-default"/>
</div>
</div>
</form>
}
</div>
</div>
<form>
<div>
<table>
<tr>
<td colspan="6" class="tableheader">
Listing</b>
</td>
</tr>
<tr style="font-weight: bold; background:#efefef">
<td>
@Html.ActionLink("Name", "Search", new { sortOrder = ViewBag.NameSortParm })
</td>
<td>
Class Name
</td>
</tr>
@{
foreach (var m in Model.AsEnumerable())
{
<tr class="oddeventable">
<td>
@Html.ActionLink(@m.Name, "TestStudent", "Student", new { Name = m.Name })
</td>
<td>
@m.ClassName
</td>
</tr>
}
}
</table>
</div>
</form>
@{
var prevDisabled = !Model.HasPreviousPage ? "disabled" : "";
var nextDisabled = !Model.HasNextPage ? "disabled" : "";
}
<a asp-action="Search"
asp-route-sortOrder="@ViewData["CurrentSort"]"
asp-route-page="@(Model.PageIndex - 1)"
asp-route-currentFilter="@ViewData["CurrentFilter"]"
class="btn btn-default @prevDisabled">
Previous
</a>
<a asp-action="Search"
asp-route-sortOrder="@ViewData["CurrentSort"]"
asp-route-page="@(Model.PageIndex + 1)"
asp-route-currentFilter="@ViewData["CurrentFilter"]"
class="btn btn-default @nextDisabled">
Next
</a>
当前视图和控制器只能接收一个搜索字符串“名称”,我想做的是它也可以搜索类名,所以基本上控制器会检索名称和类名并过滤它并创建新的 searchList 并回发到视图。实际上我很迷茫,因为'currentFilter'本身就是'名称'所以我不确定如何调整它以使过滤器可以接受两个搜索字符串,所以稍后在视图中我可以单击“下一步”页面或排序同时拥有当前过滤器。
【问题讨论】:
标签: c# search asp.net-core pagination asp.net-core-mvc