2017-02-13 1 views
0

フォームの選択に基づいてフィールド要件を動的に変更したいと思う状況があります。具体的には、私は次のフィールドがあります:彼らが望むもの複数のフィールドを動的に必要とする

国(ドロップダウン)、状態(ドロップダウン)、住所、市、郵便番号

は、以下の論理である。

if US selected as country 
    state, address, city, zip all required 
else if any other country selected 
    address, city required but state and zip code not required 

クライアント側の国ピッカーで選択されているものに基づいて、DevExpressコントロールのIsRequired設定を動的に設定するにはどうすればよいですか?

+0

これらのドロップダウンPLSのためのあなたのHTMLマークアップを投稿してください。 – andrews

+0

クライアントとサーバー側の検証を行うために、[foolproof](http://foolproof.codeplex.com/) '[RequiredIf]'属性または同様の条件付き検証属性を 'state'および' zipcode'プロパティに適用することを検討してください –

答えて

0

私はと話すことはできませんが、一般的に言えば、組み込みの検証を忘れてカスタム検証を行う必要があります。あなたは、単にすべてであなたのビューモデルでこれらのプロパティに[Required]を適用していない、そして、

if (model.Country == "US") 
{ 
    if (String.IsNullOrWhiteSpace(model.State)) 
    { 
     ModelState.AddModelError("State", "State is required"); 
    } 

    if (String.IsNullOrWhiteSpace(model.ZipCode)) 
    { 
     ModelState.AddModelError("ZipCode", "Zip Code is required"); 
    } 
} 

if (ModelState.IsValid) 
{ 
    ... 

、代わりに検証するために、このコードに依存している:例えば、あなたのアクションで、あなただけのような何かをする必要がありますそれら。国が「米国」の場合は必要とされ、そうでない場合は必要となります。

しかし、これは正直なところ、コードの匂いのビットであり、クライアント側の検証のようなものはカバーしません。カスタムRequiredIf属性のようなものを使うほうがよいでしょう。あなたは単純な検索でそれの例のトンを見つけることができますので、私はそれを読者のための練習として残します。

-1

オプションのパラメータと同じ方法を使用し

public void Method(address, city, state = null, zip = null) 
{ 
    //... 
} 
関連する問題