我必须在 ASP.NET 中限制某些下拉框的内容。
页面上有 6 个下拉菜单,下拉菜单项从数据库中获取。
在数据库中,下拉表是这样的:
ID Text
1 This is some text
2 Some more text
3 Even more text
4 This is just silly now
因此对于网页上的每个文本框 - 我只想显示特定的数据库表行。
例如,对于 dropdownbox1,我可能想要显示表 ID 1 和 2。
对于 dropdownbox2,我可能想显示表 ID 2 和 3。
对于 dropdownbox3,我可能只想显示第 4 行。
因此,如果不在 LINQ 中对此进行硬编码,我是否会更好地为每个下拉框创建另一个表,以及我想显示哪些 ID? 我不确定最好的方法是什么?
最佳答案
我认为打开一张新 table 对于这样一个简单的任务来说需要付出太多的努力。当然,这取决于您的开发/设计风格,但我建议在您当前的表格中添加一个新列,并在其中包含下拉列表 ID。
解决方案一:
ID Text Dropdowns
1 This is some text -DD1-DD2-
2 Some more text -DD2-DD3-
3 Even more text -DD3-
4 This is just silly now -DD4-
您可以通过稍微更改代码来填充下拉菜单。我使用分隔符的原因是为了处理诸如在文本 DD10
中查找 DD1
成功的情况。
您必须使用 -DropdownID-
(或您选择使用相同格式的任何分隔符)进行字符串包含搜索。编辑该列中的值,假设 -
是分隔符:
- 将
-
指定为数据库端列的默认值,如果列为空,则保留-
。 - 添加新的下拉 ID,首先查找包含您的 ID,然后将
DropdownID-
连接到列值。 - 删除下拉列表 ID,只需将
DropdownID-
替换为空字符串:""
。 - 如前所述,使用
-DropdownID-
进行搜索。
如果每个实体一次只能显示在一个下拉列表中,您只需将下拉列表的名称写入新列并寻找相等性而不是包含。
解决方案 2:
我看到您考虑过为每个下拉列表打开新的数据库表。这是一个非常糟糕的做法。你可以构建类似的东西:
-- Texts-- -- Dropdowns -- -- DropdownTexts --
ID Text ID ViewID >..< ID TextID DropdownID
1 This is some text 1 DD1 1 1 1
2 Some more text 2 DD2 2 1 3
3 Even more text 3 DD3 3 2 3
4 This is just silly now 4 4 1
我打开了表 Dropdowns
如果您需要数据库方面的帮助来实现,您可以向 Dropdowns
添加更多列以使其更具可配置性。如果没有,忽略Dropdowns
表,直接将View
中的DropdownID
写入中的
表格。DropdownID
>DropdownTexts
关于c# - 限制 ASP.net 下拉菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26137670/