依赖下拉列表的数据验证
Data validation for dependent drop down lists
我正在寻找解决以下问题的最佳方法:我有一个表单,其中有许多下拉列表,这些列表是根据以前下拉列表中的选择填充(或未填充)的。当填充列表时,字段是启用的并且是必需的。当列表未填充时,字段将被禁用,因此不是必需的。数据存储在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));
}
不幸的是,在提交表单时,这不会生效。我是不是错过了什么?
我愿意接受你的任何其他建议。
每个请求:
您可以使用视图模型并将数据注释放在那里,而不是放在域模型上。这样,您的数据库就不知道[必需]筛选器。您的客户端验证将保持不变。然后,您可以使用ModelState属性在控制器中执行服务器端检查。
相关文章:
- 使用html中的外部javascript进行数据验证
- JS验证ajax返回的html中的表单数据
- 自定义验证并格式化从数据数据库返回的响应-BEGINNER
- 如何在使用ajax提交的codeigniter中使用form_validation验证表单数据
- 正则表达式(JavaScript),用于创建数字必须大于x的数据验证
- 验证数据并将其保存到数据库以供实时应用程序使用的正确方法
- 模态窗口yii2中的Ajax验证数据
- 来自第三方身份验证的 Firebase 身份验证数据在移动 safari iOS8 中始终为空
- 验证数据是否已在数据库中,具有更多输入相同的类
- 验证数据 jQuery Handsontable 输入
- D3:如何在数据绑定期间验证数据
- Validation jQuery未正确验证数据
- 如何在Azure移动服务中使用使用逻辑验证数据
- 表单验证——jQuery验证是否足够,以及如何在PHP中巧妙地验证数据
- 向firebase数据库添加身份验证数据
- 单击按钮,我想验证数据,如果为真,我想要删除确认对话框.这可能吗?
- web和jvm之间的Firebase身份验证数据不匹配
- Jquery验证数据
- 如何通过编辑时验证数据是否相同来更改按钮文本
- 使用JS Regex验证数据