2012-02-03 19 views
0

DataAnnotationsで、この検証dillemmaをhanldeする方法:私はこのようになりますクラス構造を持っている

その後
class Person 
{ 
public virtual string FirstName {get;set;} 
public virtual string LastName {get;set;} 
public virtual Address HomeAddress {get;set;} 
} 

class Address 
{ 
public virtual string Street {get;set;} 
public virtual string City {get;set;} 
public virtual string State {get;set;} 
public virtual string ZipCode {get;set;} 
public virtual string Country {get;set;} 
} 

私は必要なアドレスとRequiredAddressを使用する人の人のアイデアを持っている...ので、 、

class RequiredAddress 
: Address 
{ 
[Required] 
public override string Street {...} 
[Required] 
public override string City {...} 
[Required] 
public override string State {...} 
[Required] 
public override string ZipCode {...} 
[Required] 
public override string Country {...} 
} 

が、私はちょうど私のRequiredPersonアドレスのアドレスフィールドにRequiredAddressのインスタンスをアップにNEWとき、MVCは、[必須]のタグを検出するように見えることができませんでした:私は次のように見ている私の新しい「必須」のアドレスを持っています私はこれをやらなければならなかった:

class PersonRequiredAddress 
    : Person 
{ 
public new RequiredAddress Address {get;set;} 
} 

私たちはこれをやらなければならなかったので、DALをやり直してオブジェクトの違いを処理する必要がありました。私は悲惨なコードの臭いのように感じます。私たちが直面しているこの困惑に対して誰かがより良い解決策を提供できますか?

答えて

1

に答えてしまっていましたか?次にclass PersonRequiredAdderss : Person<RequiredAddresss>

+0

私は可能ですが、このインスタンスでは "Person"が具体的なクラスとして使用されているだけでなく、 "PersonRequiredAddress" ...として動作しています。 –

+0

はい。はい。私はうまくいくと思います。 Heh ..はそのことを認識していたはずです。 thx @ cadrell0 –

+0

私はこれを答えとして残していますが、私が実行している問題はオブジェクトのマッピングです。 PersonRequiredAddressがIListに収まらないように見えるので、一般的なIList >を返すようには見えません –

0

dynamicly取り付けdataannotationsを見てみましょう他の

誰かがその質問はあなたがclass Person<TAddress> where TAddress : AddressするPersonを変更することができ、ここで DataAnnotations dynamically attaching attributes

+0

私はそれが正直である必要がある範囲外だと思います。 –

関連する問題