我有一个电话号码通知模型(用户通过与帐户关联的电话号码收到紧急情况通知,并且可以设置呼叫的顺序)。大多数时候,模型的电话号码部分是必需的,但在创建新用户时有一种特殊情况,我们不想强制它。
我创建了一个非常简单的子对象 UserCreationPhoneNotificationModel,它继承自上述 UserPhoneNotificationModel。还有其他一些小更改,但此处相关的更改是覆盖 PhoneNumber 字段,以便不再需要它。
在父模型中是
[Required]
public virtual string PhoneNumber { get; set; }
在儿童模型中它只是
public override string PhoneNumber { get; set; }
我认为这可以解决问题,但显然不行。我认为问题在于 requiredAttribute 上会有 Inherited = true ,但事实并非如此,所以我不完全确定为什么它被继承到子类中。
我仔细检查以确保,从父类中的字段中删除“Required”也使得子类中的字段不再是必需的,所以这绝对是某种继承的东西。
可以通过以下方式完成Hiding现有的财产被同名的新财产取代。
所以,如果父类中的属性是这样的:
[Required]
public virtual string PhoneNumber { get; set; }
您可以在子类中定义新属性,如下所示:
public new string PhoneNumber { get; set; }
这将在子类中隐藏 PhoneNumber 属性及其属性。现在您可以将任何其他属性与它一起使用。例如,您可以添加[PhoneNumber]
属性为子类中的属性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)