我们正在研究一个用C#编写的医院信息系统,并使用NHibernate将对象映射到数据库。 MVC模式用于将业务逻辑与UI分离。这是问题,

如何为UI添加可变大小的不同字符串集?

例如,Contact对象具有名为City的属性,用于保存哪个城市联系人。在该应用程序编写的国家/地区有超过80个城市。你怎么能把这些城市写成一个组合框? (或数据网格,表格......)在此示例中,城市号码是固定的。没有必要长时间添加另一个城市。 (如果城市列表发生变化,重新编译不是问题)

例如,FooBar对象具有另一个名为CITY的属性,该属性将保存1000个不同的字符串值,并且将从该属性的组合框中选择这些值。如果用户需要,可以增加这个集合。如何使用这些值加载组合框? (如果字符串列表静态写入组合框对象,则重新编译是个问题)

我有以下不同的解决方案

  1. 在代码或设计器
  2. 中静态写入组合框的所有字符串值
  3. 从资源文件中获取值
  4. 将这些值写入XML文件(实际上与上面相同,但无需重新编译)
  5. 创建一个StringHolder对象,并使用NHibernate
  6. Type表中获取值
  7. 创建一个名为Value且具有STRINGHOLDER和<=>属性的类。所有字符串值(包括<=>和<=>)都只写在一个名为<=>的表中。并使用像<!>“; CITY <!>”这样的键获取这些值;或<!>“; FOOBAR <!>”;与NHibernate。
  8. 你会选择哪一个?或者你能建议我另一个吗?

    全部谢谢

有帮助吗?

解决方案

如果这些位置实际上将用于任何事情,请将它们带入数据库。如果数据<!>“并未真正使用<!>”,但是提供了城市查找以使用户界面更好,那么XML文件选项也不是一个糟糕的方法。

通过使用,我的意思是列出所有在纽约的雇主和类似的东西。如果它是<!>“死数据<!>”,只是要显示,请选择需要最少工作量和最小风险的解决方案 - 这可能是文件选项。

其他提示

我会投票给解决方案#4。这就是我在类似情况下一直这样做的方式。这似乎是一个更清洁的解决方案。

你觉得使用List <!> lt; string <!> gt;获取城市列表?在DAL或BL中加载此字符串列表,然后将其传递给UI。

同样的解决方案也应该对FooBar值有益。

如果你有与City或FooBar相关联的ID,比如说NY和它在DB中的数字ID是1,那么你可以使用KeyValuePair <!> lt; TKey,TValue <!> gt;。使用泛型,您可以指定此KeyValuePair中的数据。城市名称或FooBar的字符串值可以是键,数字ID可以是值。

只需2美分。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top