2

我有一个包含很多属性的实体类,每个属性都有一个显示名称。我有一个页面,我在其中显示属性。为此,我创建了一个模型,在其中复制了实体类的属性。

在控制器中,我从数据库中检索数据,并拥有一个包含我需要的所有数据的实体类项目。通过反射,我将所有数据复制到模型中。在页面中,通过使用 Html 助手,我显示了从模型中获取的属性名称和属性值。

我的问题是 - 如何更好地实施它?我想知道将属性从实体类复制到模型是否是一种矫枉过正。此外,我为属性复制了显示名称属性。

我正在考虑在模型中创建一个表示整个实体类的属性,然后通过模型从页面检索数据,但使用此类的属性。但是,这看起来不像是一个透明的解决方案。

对更好技术的想法表示赞赏。

4

1 回答 1

1

我认为您正在遵循最佳实践,但这里有一些方法可以减少重复:

  1. 如果实体模型和视图模型上的字段名称相同,您可能会在两个模型上重用相同的 MetaData 注释类。无论是这样,还是通过对这些注释类的继承,都可以减少重复的语法。

  2. 如果您不想执行上述操作,请使用资源文件作为显示属性。http://thatextramile.be/blog/2011/03/convention-based-localization-with-asp-net-mvc/这将消除一些重复的需要。还可以很好地为本地化做好准备。

  3. 虽然我不建议你这样做,但是你可以使用你的实体模型作为你的视图模型,只要你在它上面设置 Bind Exclude 注释来保护你自己免受客户端的属性注入。它是您的裤子座位类型的东西,但它确实减少了重复,尽管存在安全风险。

  4. 你说你在使用反射?我认为您正在使用类似于奇妙的 Automapper 的东西?http://automapper.codeplex.com/如果没有,这也可以为您节省一些时间。

我希望这在一些小方面有所帮助。

PS 总是很高兴看到开发人员希望做的事情比他们已经拥有的更好。它显示了角色的成熟度和对我们工艺的热情;可悲的是经常缺席。

于 2013-04-10T14:56:45.900 回答