ASP.NET MVC是否允许私有ViewModel构造函数?

Lor*_*lin 7 architecture asp.net-mvc

问题是,如标题所示,MVC模型绑定器是否允许视图模型对象的私有构造函数.显然它没有,说MissingMethodException: No parameterless constructor defined for this object.即使有一个私有的无参数构造函数.如果不允许私有构造函数,是否有一个arhitectural解决方法?

这样的构造函数可能有助于确保只有模型绑定器可以创建其字段可能无法一致填充的ViewModel对象 - 在代码的其他部分中不可能忘记完成某些字段.

在类似情况下,实体框架可以使用私有构造函数和私有属性.

SLa*_*aks 16

不,不是的.

如果要阻止实际代码调用该构造函数,可以添加[Obsolete("For model binding only", true)]到公共构造函数.如果显式调用构造函数,这将导致编译器错误.