答えをグーグルで検索したところ、トピックに多くの質問とブログ投稿が見つかりました。多くは非常に複雑な方法のようであり、いくつかは不完全です。
タイプが2つのプロパティを持つCustomerオブジェクトがありますAddress
。1つはBillingAddressで、もう1つはShippingAddressです。フォームでは、アドレスタイプにEditorTemplateを使用しています。ユーザーは、ShippingAddressがBillingAddressと同じかどうかを選択するオプションがあります。
public class Customer
{
public virtual string CustomerName { get; set; }
public virtual string Title { get; set; }
public virtual Address BillingAddress { get; set; }
public virtual Address ShippingAddress { get; set; }
public virtual bool ShippingSameAsBilling { get; set; }
// Cont..
}
public class Address
{
public virtual string AddressLine { get; set; }
[Required]
public virtual string City { get; set; }
// Cont..
}
注:ビューにチェックボックスがありますpublic virtual bool ShippingSameAsBilling { get; set; }
私の問題は、Address
必須フィールドを持つクラスのタイプであるAddressプロパティの検証が必要なことです。ユーザーが「配送先住所は請求先住所と同じ」を選択しない場合は、すべて正常に機能します。彼/彼女がそれらを同じにして記入のみにすることを選択した場合BillingAddress
、ShippingAddress
EditorTemplateは必須フィールドにエラーを表示します。
アドレスクラスから属性を削除[Required]
し、フォームが投稿された後、サーバー側で手動で検証できます。私にとっては、このシナリオでうまく機能します。また、クライアント側の検証を既存のMVC検証に手動でバインドする方法を知る必要がありますか?または、この目標を達成するためのより良い方法を提案してください。