次の問題に対する最善のアプローチを探しています。以前のドロップダウンリストで行った選択に基づいて入力された(または入力されていない)ドロップダウンリストがいくつかあるフォームがあります。リストにデータが入力されると、フィールドが有効になり、必須になります。リストが入力されていない場合、フィールドは無効になっているため、必須ではありません。データはSQLデータベースに保存されています。System.ComponentModel.DataAnnotationsの[Required]属性を各フィールドに適用しました。これはクライアント側では正常に機能しますが、モデルをデータベースに保存しようとすると、無効になっているフィールドごとにdbValidationErrorsが表示されます。
理想的には、依存リストから[Required]属性を削除して、モデルをデータベースに保存できるようにします。次に、MVCのクライアント側の検証を利用して、クライアント側でフィールドの要件を切り替える方法が必要になります。これにより、必要な各フィールド間で一貫したスタイルが維持されます。このリンクは、私が探しているものに沿っているようです。これが私のコードです:
function enableValidation(id, formId) {
document.getElementById(id).setAttribute('data-val-required', '');
document.getElementById(id).setAttribute('data-val', 'true');
document.getElementById(id).setAttribute('class', 'input-validation-error');
$.validator.unobtrusive.parse($(formId));
}
function disableValidation(id, formId) {
document.getElementById(id).removeAttribute('data-val-required');
document.getElementById(id).removeAttribute('data-val');
document.getElementById(id).removeAttribute('class');
$.validator.unobtrusive.parse($('#'+formId));
}
残念ながら、これはフォームが送信されたときに検証されません。私は何かが足りないのですか?
私はあなたが持っているかもしれない他のどんな提案にもオープンです。