C# 使用多个枚举列表根据第一个下拉列表的值填充第二个下拉列表

C# 使用多个枚举列表根据第一个下拉列表的值填充第二个下拉列表,c#,razor,model-view-controller,C#,Razor,Model View Controller,我正在努力做一件看起来很容易的事情 假设我有两个下拉列表Country和City 对于系统的用户,我希望他们使用这些下拉列表选择他们的地址 我在考虑为所有国家创建一个枚举,然后为所有国家创建一个枚举列表。然后在第一个下拉列表中使用javascript OnChange切换第二个下拉列表,这样我就可以得到每个国家的正确城市列表。(英国城市、印度、美国等) 但是,当我考虑用户视图模型时,我开始觉得这是一个坏主意,我会为城市用户使用什么类型的视图?在谷歌搜索之后,我发现了这篇文章:我想我可以使用这篇文

我正在努力做一件看起来很容易的事情

假设我有两个下拉列表Country和City

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

我在考虑为所有国家创建一个枚举,然后为所有国家创建一个枚举列表。然后在第一个下拉列表中使用javascript OnChange切换第二个下拉列表,这样我就可以得到每个国家的正确城市列表。(英国城市、印度、美国等)

但是,当我考虑用户视图模型时,我开始觉得这是一个坏主意,我会为城市用户使用什么类型的视图?在谷歌搜索之后,我发现了这篇文章:我想我可以使用这篇文章的泛型部分来做我想做的事情。但我还是忍不住觉得我已经把问题复杂化了


关于如何以更直接的方式实现这一点,您有什么想法/示例吗。

您对使用枚举有什么严格要求吗

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

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

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


您可以在其他和问题中进一步了解此讨论(尽管有些观点不同,因此您应该对此主题做出自己的判断)。

您对使用枚举有严格要求吗?不,它不一定是枚举。但它似乎确实是目前系统中用于填充下拉列表的内容。如果不是国家和城市,而是一个较小的列表,不太可能改变你的建议,你想要级联下拉列表。有关示例,请参阅。和枚举在您的应用程序中不合适case@StephenMuecke谢谢Stephen,我已经用它创建了我需要的东西,如果你想输入答案,我会接受。不,它不必是枚举。但它似乎确实是目前系统中用于填充下拉列表的内容。如果不是国家和城市,而是一个较小的列表,不太可能改变什么suggest@AidanO实际上,我几乎从不建议使用枚举,除非如果值发生变化,我还需要修改代码(即:当我的代码需要根据值是X还是Y做出决定时,这些值几乎永远不会改变。但是在SO和SE上还有无数其他帖子