【问题标题】:Using multiple enum lists to populate a 2nd dropdown based on the values of the first dropdown使用多个枚举列表根据第一个下拉列表的值填充第二个下拉列表
【发布时间】:2018-03-13 17:21:00
【问题描述】:

我正在为看起来应该很容易做的事情而苦苦挣扎。

假设我有两个下拉菜单 Country 和 City。

对于系统用户,我希望他们使用这些下拉菜单选择他们的地址。

我正在考虑为所有国家/地区创建一个枚举,然后为所有国家/地区创建一个枚举列表。然后使用 javascript OnChange 作为第一个下拉菜单来切换第二个下拉菜单,这样我就有了每个国家/地区的正确城市列表。 (UKCities、IndiaCities、USCities 等...)

但是当我考虑用户视图模型时,我开始觉得这是个坏主意,我会为用户使用什么类型的城市?在做了一些谷歌搜索后,我找到了这篇文章:Using Drop Down Lists with enums,我想我可以使用其中的泛型部分来做我想做的事。但我不禁觉得我已经把问题复杂化了。

关于如何以更直接的方式执行此操作的任何想法/示例。

【问题讨论】:

  • 你对使用枚举有硬性要求吗?
  • 不,它不一定是枚举。但它似乎确实是系统中当前用于填充下拉列表的内容。如果不是国家和城市,而是一个较小的列表,不太可能改变您的建议
  • 您需要级联下拉列表。有关示例,请参阅 this DotNetFiddle。并且枚举不适合您的情况
  • @StephenMuecke 谢谢斯蒂芬,我已经用它来创建我需要的东西,如果你想为此输入答案,我会接受。

标签: c# razor model-view-controller


【解决方案1】:

你对使用枚举有严格的要求吗?

在不了解您的代码、架构或您使用的技术的情况下,我只能给您一个通用的建议:

这似乎应该从数据库中获取,而不是硬编码在枚举中。

这有很多优点,因为它更动态且更易于维护(您无需重新编译应用即可添加或删除国家/城市),并且您可以使用关系强制数据完整性User 和 Country/City 表之间的约束。

您可以在其他Software EngineeringStack Overflow 问题中进一步阅读有关此讨论的内容(尽管有些意见不同,因此您应该对这个主题做出自己的判断)。

【讨论】:

  • 不,它不一定是枚举。但它似乎确实是系统中当前用于填充下拉列表的内容。如果不是国家和城市,而是一个较小的列表,那么您的建议不太可能改变
  • @AidanO 实际上,我几乎从不建议枚举,除非值发生变化,我还需要更改我的代码(即:当我的代码需要根据值何时做出决定时 X或者 Y,AND,这些值几乎永远不会改变。但是在 SO 和 SE 上还有无数其他关于 this problem 的帖子
猜你喜欢
  • 1970-01-01
  • 2013-12-06
  • 1970-01-01
  • 2020-05-06
  • 1970-01-01
  • 2012-01-04
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
相关资源
最近更新 更多