繁体   English   中英

将字符串集放入表示层

[英]Getting String Sets into Presentation Layer

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

如何获得可变大小的不同字符串集到UI?

例如, Contact对象具有一个名为City的属性,该属性保存住哪个城市的联系人。 在为该应用程序编写的国家/地区中,有80多个城市。 您如何将那些城市写到组合框中? (或数据网格,表格等)。在此示例中,城市编号是固定的。 长时间无需添加其他城市。 (如果城市列表更改,则重新编译不是问题)

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

我有以下不同的解决方案

  1. 将所有字符串值静态写入代码或设计器中的组合框
  2. 从资源文件获取值
  3. 将这些值写入XML文件(实际上与上面相同,但无需重新编译)
  4. 使用NHibernate创建一个City对象并将值放入CITY表的列表中
  5. 创建一个名为StringHolder的类,该类具有TypeValue属性。 所有字符串值(包括CityFooBar )将只写在一个名为STRINGHOLDER表中。 并使用NHibernate使用“ CITY”或“ FOOBAR”之类的键获取这些值。

你会选哪一个? 还是可以建议我另一个?

谢谢大家

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

如果这些位置实际上将用于任何用途,请将其放入数据库中。 如果数据“并没有真正使用”,但是提供了城市查询以改善用户界面,那么XML文件选项也不是坏方法。

通过使用,我的意思是像列出纽约的所有员工之类的东西。 如果只是显示“失效数据”,请选择需要最少工作量和最少风险的解决方案-这可能是文件选项。

您如何将List <string>用于城市列表? 将此字符串列表加载到DAL或BL中,然后将其传递给UI。

同样的解决方案也应适用于FooBar值。

如果您具有与City或FooBar关联的ID,例如NY,并且其在数据库中的数字ID为1,则可以使用KeyValuePair <TKey,TValue>。 使用泛型,您可以决定此KeyValuePair中将包含哪些数据。 城市名称或FooBar的字符串值可以是键,数字ID可以是值。

只需2美分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM