我有一个具有很多属性的实体类,每个属性都有一个显示名称。 我有一个页面,在那里我显示属性。为此,我创建了一个模型,我从实体类中复制了属性。
在控制器中,我从数据库中检索数据,并拥有包含我需要的所有数据的实体类的项目。通过反射,我将所有数据复制到模型中。在页面中使用Html助手我显示属性的名称和从模型中获取的属性值。
我的问题是 - 如何更好地实施它?我想知道将实体类中的属性复制到模型是否有点过分。此外,我有属性的重复显示名称属性。
我正在考虑在模型中创建一个表示整个实体类的属性,然后从页面中通过模型检索数据,但是使用此类的属性。但是,这看起来不是一个透明的解决方案。
赞赏关于更好技术的想法。
答案 0 :(得分:1)
我认为您遵循最佳做法,但有几种方法可以减少重复:
如果实体模型上的字段和视图模型的名称相同,则可能会在两个模型上重复使用相同的MetaData注记类。无论是,还是通过对这些注释类的继承,都可以减少重复的语法。
如果您不想执行上述操作,请使用资源文件作为显示属性。 http://thatextramile.be/blog/2011/03/convention-based-localization-with-asp-net-mvc/这将消除一些重复的需要。同时也很适合本地化。
虽然我不建议您这样做,但是可以使用您的实体模型作为您的视图模型,只要您在其上设置Bind Exclude注释以保护自己免受属性注入客户端。它在你的裤子类型的位置飞行,但它确实减少了重复,虽然存在安全风险。
你说你正在使用反射?我认为你使用的东西类似于梦幻般的Automapper? http://automapper.codeplex.com/如果没有,这也可以为您节省一些时间。
我希望这会有所帮助。
P.S。总是很高兴看到开发人员希望做得比现有的更好。它表现出很大的成熟度和对我们工艺的热情;可悲的是经常缺席。