【发布时间】:2012-09-23 02:12:28
【问题描述】:
大家!我对实现一段代码以在 asp.net mvc 3 中使用具有不同必填字段的模型(6)进行工作感到困惑。 我有一个模型:
public class OpportunityModel
{
public Guid OpportunityId { get; set; }
[Display(Name = "Value")]
[RegularExpression(@"^[-+]?\d{1,10}(\.\d{0,4})?$", ErrorMessage = "Must be a number")]
public decimal? ActualValue { get; set; }
[Display(Name = "Name")]
[Required(ErrorMessage = "Name is required")]
public string Name { get; set; }
public string Product { get; set; }
[Display(Name = "Estimated Date")]
public DateTime? EstimateDate { get; set; }
public bool? Sales6ixFallDown { get; set; }
[Display(Name = "Stage")]
public Stages Sales6ixStage { get; set; }
public DateTime? Sales6ixDateInBoard { get; set; }
public DateTime? Sales6ixDateInCurrentStage { get; set; }
public DateTime? Sales6ixNextAppointmentDate { get; set; }
[Display(Name = "Description")]
public string Description { get; set; }
public string Sales6ixNextAppointmentDescription { get; set; }
public int NewColumn { get; set; }
public Guid? CustomerId { get; set; }
public string CustomerName { get; set; }
}
我需要的是动态更改其中所需封地的可能性。经过一番谷歌搜索,这是不可能的,并想到使用模型继承。我的意思是:我有一个这样的基本模型:
public class BaseOpportunityModel
{
public Guid OpportunityId { get; set; }
public virtual decimal? ActualValue { get; set; }
public virtual string Name { get; set; }
public string Product { get; set; }
public DateTime? EstimateDate { get; set; }
public bool? Sales6ixFallDown { get; set; }
[Display(Name = "Stage")]
public Stages Sales6ixStage { get; set; }
public DateTime? Sales6ixDateInBoard { get; set; }
public DateTime? Sales6ixDateInCurrentStage { get; set; }
public DateTime? Sales6ixNextAppointmentDate { get; set; }
[Display(Name = "Description")]
public string Description { get; set; }
public string Sales6ixNextAppointmentDescription { get; set; }
public int NewColumn { get; set; }
public Guid? CustomerId { get; set; }
public string CustomerName { get; set; }
}
其中虚拟属性是可能是或不是必填字段的属性。然后我有几个像这样的基础派生模型:
public class OpportunityModel0: BaseOpportunityModel
{
[Display(Name = "Value")]
[Required(ErrorMessage = "Name is required")]
[RegularExpression(@"^[-+]?\d{1,10}(\.\d{0,4})?$", ErrorMessage = "Must be a number")]
public override decimal? ActualValue { get; set; }
[Display(Name = "Name")]
[Required(ErrorMessage = "Name is required")]
public override string Name { get; set; }
}
然后我可以在 View 和 Controller 基础模型 BaseOpportunityModel 中使用。但是我遇到了以下问题:
- 验证使用来自 BaseOpportunityModel 的注释属性并忽略派生模型中的属性。
我做错了什么?有人可以引导我朝着正确的方向前进或帮助我解决这个问题吗?提前致谢。
【问题讨论】:
标签: .net asp.net-mvc-3 validation data-annotations model-validation