【发布时间】:2016-09-27 20:55:24
【问题描述】:
我有一个使用 C# 和 Razor 语法的 MVC 网页,它显示从数据库返回的结果列表,我想使用下拉菜单过滤结果。
基本上我只想显示列值等于下拉菜单值的结果。我唯一的问题是该列是 BIT 数据类型,我无法让它工作。
我尝试将下拉列表的值转换为布尔值,但这也不起作用。我现在不在工作,所以不能发布任何代码抱歉。
我最初查询数据库的方式是使用搜索字符串,基本上将不同的列与搜索字符串进行比较,以及搜索字符串是否为“”或为空。我刚刚将下拉菜单查询添加到此搜索字符串选择查询的末尾,因为它似乎是唯一可以去的地方,它是这样的 -
from db(db.Name.Contains(searchString) && db.InUse.Equals(dropdownValue))
select db
我知道这并不完全正确,但希望您能明白这一点。澄清一下,我遇到的问题是 InUse.Equals,因为 InUse 是 BIT 数据类型,而 dropdownValue 是 INT,转换为 BOOL 时甚至不起作用。我没有收到任何错误并且页面加载,但它实际上并没有过滤结果。
任何帮助都会很棒,我明天会尝试用实际代码更新帖子。
【问题讨论】:
-
我不知道您是否正在寻找一种 JavaScript 解决方案,以便在您在下拉列表中选择某些内容时简单地隐藏结果,因为您在此处显示 C# 代码。
-
您是否希望下拉菜单向某些控制器触发 ajax 请求以更新您拥有的此列表?
-
“InUse 是一种 BIT 数据类型”是什么意思? bit datatype in SQL maps to Boolean in the .NET Framework as seen here
-
我希望下拉列表以与搜索字符串相同的方式工作,基本上查询数据库中的每一行以查看“InUse”列的值是 1 还是 0 . 我不热衷于做 AJAX 请求,因为我也必须更改搜索字符串,不是吗?我没有考虑用 Javascript 以隐藏/显示的方式来做,所以这可能是一个选择。但是,理想情况下,C# 解决方案对我来说是最好的。我的意思是数据库中的“InUse”列是位数据类型,所以要么是 0,1,要么是 null。
-
dropdownValue 将哪些值传递给控制器?零和一?您是否尝试过将 dropdownValue 转换为临时布尔变量,然后对该值 db.InUse == tempBoolean 进行直接比较?
标签: c# html sql-server asp.net-mvc linq