ASP.NET MVC 基于Fecha字段实现数据表日期范围过滤
基于Fecha字段实现日期范围过滤的解决方案
我来帮你搞定这个日期范围过滤的需求,咱们直接修改你的控制器代码,同时也给你补充前端视图的参考实现:
修改后的控制器代码
// GET: tb_visitas public ActionResult Index(DateTime? startdate, DateTime? enddate) { var tb_visitas = db.tb_visitas .Include(t => t.tb_brochuras) .Include(t => t.tb_despertai) .Include(t => t.tb_estrangeiros) .Include(t => t.tb_folhetos) .Include(t => t.tb_livros) .Include(t => t.tb_sentinela); // 应用日期范围过滤逻辑 if (startdate.HasValue) { tb_visitas = tb_visitas.Where(v => v.Fecha >= startdate.Value); } if (enddate.HasValue) { // 若Fecha包含时间戳,可改成enddate.Value.Date.AddDays(1).AddTicks(-1)来包含当天所有时段数据 tb_visitas = tb_visitas.Where(v => v.Fecha <= enddate.Value); } return View(tb_visitas.ToList()); }
关键细节说明
- 可选参数处理:因为
startdate和enddate是可空DateTime类型,先用HasValue判断是否有传入值,避免空引用报错。 - 时间戳兼容:如果你的
Fecha字段带具体时间(比如2024-05-20 16:45:00),用户选择的结束日期是2024-05-20时,默认的<=会只过滤到当天0点前的数据。这种场景下可以把结束条件调整为:
这样就能包含结束日期当天的所有时间点数据。tb_visitas = tb_visitas.Where(v => v.Fecha <= enddate.Value.Date.AddDays(1).AddTicks(-1));
前端视图参考(添加日期筛选表单)
在你的Index视图里,加个表单让用户输入日期范围:
@using (Html.BeginForm("Index", "tb_visitas", FormMethod.Get)) { <div class="row"> <div class="col-md-4"> <label>起始日期</label> @Html.TextBox("startdate", null, new { type = "date", @class = "form-control" }) </div> <div class="col-md-4"> <label>结束日期</label> @Html.TextBox("enddate", null, new { type = "date", @class = "form-control" }) </div> <div class="col-md-4 align-self-end"> <button type="submit" class="btn btn-primary w-100">筛选</button> </div> </div> } <!-- 下方是你的数据表格展示代码 --> <table class="table mt-3"> <!-- ... 表格内容 ... --> </table>
这样用户就能通过表单提交日期范围,控制器会自动接收参数并完成数据过滤啦。
内容的提问来源于stack exchange,提问作者DP WS Receptivo
相关产品推荐
相关产品推荐

