【发布时间】:2010-11-24 21:36:46
【问题描述】:
我们将所有的 DataAnnotations 放在我们的模型类 Customer 上。然后,我们将 Customer 的实例作为我们关联的 ViewModel 上的属性以及国家等的一些查找列表公开,并将其显示在我们的视图中。到目前为止一切都很好。
然后我们阅读 SO 和其他来源,我们不应该将我们的整个客户模型对象传递给视图,因为只为视图提供它需要的最低限度,更重要的是(对我们而言)防止可能当 ModelBinding 潜在的恶意回发添加其他信息以更改视图中不可用的模型属性时出现问题。
我们如何将所有这些 DataAnnotation 属性从模型对象中取出并放到可能被削减的 ViewModel 属性上,而不会将 DRY 原则抛到悬崖边上?
另外,我们认为不应该对从数据库中提取的实体使用 TryUpdateModel 是否正确?我想我们的选择是使用 TryUpdateModel 并传递一个排除属性列表,考虑到该列表只是字符串类型的参数,这对我来说似乎不是特别优雅。或者也许我们应该取消 TryUpdateModel 并使用诸如 AutoMapper 这样更安全的工具?
感谢您对这些问题的任何想法。
【问题讨论】:
标签: asp.net-mvc data-annotations validation mvvm