c# - ASP。NET 复选框 onchange
问题描述
我有一个页面显示从数据库中提取的数据表。过滤数据以显示最近 6 个月的数据。我想在页面上放置一个复选框,用户可以单击该复选框在查看所有数据从所有时间到过滤的最近 6 个月数据之间切换。这是我到目前为止所拥有的:
HTML:
<input type="checkbox" name="datefilter" class="form-check-input" onChange="this.form.submit()">
Display All Time Data
控制器:
public ActionResult Index(string[] datefilter, string SearchString, string sortOrder, int? page)
{
DateTime testDate = DateTime.Now.AddMonths(-3);
var PatientID = from p in db.PatientTbls
select p;
if (datefilter == null)
{
PatientID = PatientID.Where(s => s.CreationDate >= testDate);
}
PatientID = PatientID.OrderByDescending(s => s.CreationDate);
if (!String.IsNullOrEmpty(SearchString))
{
PatientID = PatientID.Where(s => s.ReadOnModel.Contains(SearchString) || s.ToBeMarkedOnLaser.Contains(SearchString) || s.Brand.Contains(SearchString));
}
return View(PatientID.ToList().ToPagedList(page ?? 1, 150));
}
我的想法是让复选框重新提交带有新检查值的表单,然后“if”语句将过滤或不过滤结果。问题是当我选中该框时,它会刷新页面,然后清除该复选框。同样,一旦我选中该框一次,它就永远不会运行日期过滤器查询。任何帮助都会很棒。
PS。我对这一切都很陌生,所以请多多包涵。
解决方案
好吧尝试 OnMouseUp / Down... - OnChange 可能为时已晚...
您可以使用 AJAX 来调用操作 - 简单地说,例如:
function loadDoc() {
const xhttp = new XMLHttpRequest();
xhttp.onload = function() {
document.getElementById("demo").innerHTML = this.responseText;
}
xhttp.open("GET", "/controller/filteredindex ...", true);
xhttp.send();
}
A)您可以使用 RAZOR ... 准备路径,其中过滤索引只是返回要显示的正确数据。
B)您还可以查询操作中的复选框状态......以创建更新的正确视图。如果您覆盖(视图)模型中的复选框,则设置或重置它很简单。所以返回的视图显示了你想要的一切。
AJAX 来自:https ://www.w3schools.com/js/js_ajax_intro.asp 最好的问候,奥利弗
推荐阅读
- javascript - Angular Firestore Valuechanges 获取文档参考
- powershell - 在 AD 中查找用户所属的所有组(包括嵌套组)
- spring-boot - Oauth2 SpringBoot注销问题
- javascript - Angular 10 - NGRX 升级问题:无法添加属性 x 对象不可扩展并且无法分配给对象的只读属性 x
- macos - Macos 中的隐蔽日期模式抛出日期:不存在的时间
- python - 如果下载按钮没有 URL,如何从网站下载 CSV 文件?
- dynamic - 通过 elementor 向 wordpress RSS 提要添加动态功能
- javascript - 相同 HTML 上的 2 个 D3.js 条形图。一个 D3 脚本破坏了另一个
- json - 使用 hazelcast jet 处理 JSON
- powershell - 如何在经典devop(不是yaml)中设置变量并在不同任务之间传递?