みんな!いくつかのケースで、異なる必須フィールドを持つモデルを使用してasp.net mvc 3で作業.netデータ注釈を作成するためのコードを実装することと混同しています(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; }
}
そして、ビューとコントローラーのベースモデルBaseOpportunityModelで使用できるようになります。しかし、私は次の問題に遭遇しました:
- 検証では、BaseOpportunityModelのアノテーション属性を使用し、派生モデルの属性を無視します。
何が間違っていますか?誰かが私を正しい方向に導くか、この問題で私を助けることができますか?前もって感謝します。