模型绑定没有setter的实体

时间:2012-02-15 13:41:18

标签: asp.net-mvc asp.net-mvc-3 view model

在我的域中,我有实体没有属性的设置器(奇怪的特殊情况除外)。因此,所有值都必须通过构造函数传递。

问题是,现在我正在使用域实体作为我的CREATE视图的模型,当模型绑定器尝试将表单字段绑定到模型时,它会抛出No parameterless constructor defined for this object错误。

围绕这个最好的方法是什么。我能想到的是:

  1. 创建新模型活页夹???
  2. 为视图中使用的每个实体创建一个映射器,用于将FormCollection转换为实体。
  3. 在将MVC发送到我的服务层之前,创建实体的ViewModel表示并将其映射到原始实体类。
  4. 重构实体以包含setter。
  5. 我真的不想通过包含setter来打开我的实体。有人有任何提示吗?最简单/最干净的方式是理想的。

1 个答案:

答案 0 :(得分:1)

最干净/推荐/防错/易于维护的方法是 3.创建ViewModel 。 ViewModel将只包含创建视图所需的字段。您验证,转换为域模型(可能使用AutoMapper)并发送到服务层。