我正在寻找解决以下问题的最佳方法:我有一个包含多个下拉列表的表单,这些下拉列表基于先前下拉列表中的选择进行填充(或未填充)。填充列表后,这些字段将被启用并且是必需的。当列表未填充时,字段被禁用,因此不需要。数据存储在 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));
}
不幸的是,这并不能验证何时提交表单。我错过了什么吗?
我愿意接受您可能提出的任何其他建议。