【问题标题】:Does ASP.NET MVC allow private ViewModel constructor?ASP.NET MVC 是否允许私有 ViewModel 构造函数?
【发布时间】:2012-08-26 12:07:43
【问题描述】:

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

这样的构造函数可能有助于确保只有模型绑定器才能创建其字段可能不会始终被填充的 ViewModel 对象 - 在代码的其他部分中,某些字段不会被忘记完成。

Entity Framework,在类似的情况下,可以使用私有构造函数和私有属性。

【问题讨论】:

标签: asp.net-mvc architecture


【解决方案1】:

不,它没有。

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

【讨论】:

  • 这太隐蔽了,我花了几个月的时间才找到这个解决方案。这个答案需要在更流行的“无参数少构造函数定义”线程上。谢谢。
【解决方案2】:

您始终可以编写一个支持私有/受保护 ctor 的自定义模型绑定器。

【讨论】:

    猜你喜欢
    • 2011-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-11
    • 1970-01-01
    • 1970-01-01
    • 2019-10-16
    相关资源
    最近更新 更多