如何解决ASP .Net MVC Web 应用程序搜索过滤器不起作用?
我正在使用 Entity Framework Core 开发 ASP .Net Core Web 应用程序。
我有一张表格,想根据列进行过滤。现在我只是从userName过滤开始,然后我将扩展其他列的代码。
public class HistoryFilterModel
{
public string UserName { get; set; }
// public string UserSays { get; set; }
// public DateTime CreateDateFrom { get; set; }
// public DateTime CreateDateto { get; set; }
}
我有 FilterService
public class HistoryFilteRSService
{
private MainContext _context;
public HistoryFilteRSService(MainContext context)
{
_context = context;
}
public IQueryable<History> GetHistories(HistoryFilterModel filterModel)
{
var result = _context.History.AsQueryable();
if( filterModel != null)
{
if (!string.IsNullOrEmpty(filterModel.UserName))
result = result.Where(x => x.UserName.Contains(filterModel.UserName));
//if (!string.IsNullOrEmpty(filterModel.UserSays))
// result = result.Where(x => x.UserSays.Contains(filterModel.UserSays));
//if (filterModel.CreateDateFrom.Date != null)
// result = result.Where(x => x.CreateDate.Date >= filterModel.CreateDateFrom);
//if (filterModel.CreateDateto.Date != null)
// result = result.Where(x => x.CreateDate.Date <= filterModel.CreateDateto);
}
return result;
}
}
之后,我开始研究 HistoryController 的 Index 方法。
public async Task<IActionResult> Index(HistoryFilterModel filterModel,int page = 1 )
{
var pageSize = 50;
var history = _context.History
.OrderByDescending(m => m.CreateDate);
var pagingHistory = history.Skip((page - 1) * pageSize).Take(pageSize);
var totalCount = history.Count();
var totalPages = Math.Ceiling((decimal)totalCount / pageSize);
ViewBag.TotalPages = totalPages;
var filter = new HistoryFilteRSService(_context);
var model = filter.GetHistories(filterModel);
if (! string.IsNullOrEmpty(filterModel.UserName))
{
return View(model.ToListAsync());
}
else
{
return View(await history.ToListAsync());
}
}
@using (Html.BeginForm("Index","HistoryController",FormMethod.Get))
{
<p>
User Name: @Html.TextBox("filterModel.UserName")
<input type="submit" value="Filtrele" class="btn btn-primary" />
</p>
}
当我搜索用户名时,例如 Alex。 (History表中有数据) 我有一个错误:
未找到以下网址的网页 http://localhost:XXXX/HistoryController?filterModel.UserName=Alex
我该如何解决这个问题?或者您可以建议任何过滤表格数据的方法,例如像 Excel 表格列过滤那样工作吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。