2017-12-25 6 views
0

私は必要なフィールドを持っているジョブと呼ばれるモデルがあり、ここでは簡単のためにある:ASP.NET検証エラー

public class Job 
{ 
    [Required(ErrorMessage = "Insured Name is required.")] 
    [MaxLength(100, ErrorMessage = "Insured Name cannot be longer than 100 characters.")] 
    [DisplayName("Insured Name")] 
    public string InsuredName { get; set; } 
} 

私は今、仕事の種類を持っている必要があるプライベートジョブと呼ばれます同じフィールドを持ち、複数のフィールドの検証メッセージを変更しようとしている以外は、同じデータベーステーブルにマップされています。つまり、被保険者名はクライアント名になります。

私はサブクラス化することによってこれを行うことができると思ったので、私は例として作成:

[NotMapped] 
public class PrivateJobDTO : Job 
{ 
    [Required(ErrorMessage = "Client Name is required.")] 
    [MaxLength(100, ErrorMessage = "Client Name cannot be longer than 100 characters.")] 
    [DisplayName("Client Name")] 
    new public string InsuredName { get; set; } 

} 

私は私のviewmodelにPrivateJobDTOを渡すとき、私はまだ、「被保険者の名前が必要です」という検証エラーメッセージが表示されます私は "クライアント名が必要です"と期待していましたが、

私は間違って何をしていますか? (これは正しいアプローチです)

+0

どのようにPrivateJobDTOインスタンスを渡しますか?あなたもそれを共有しますか? – lucky

+0

モデルを継承する必要はありません。モデルバインディングに必要な正しいバインド接頭辞を使用している限り、ビューモデルはデータモデルとは別のものにすることができます。 – usercr

+0

'PrivateJobDTO'オブジェクトをモデルにどのように渡していますか? –

答えて

0

コメントのおかげで、私はサブクラスではなく、モデルに基本クラスを渡していたことがわかりました。愚かな間違いです。