繁体   English   中英

如何在ASP.NET MVC 4中进行复杂的客户端数据验证

[英]How to do complex client-side data validation in ASP.NET MVC 4

我是Windows Form开发人员的长期工作,试图让我了解如何进行Web开发。 正如标题所说,我很确定我想继续使用ASP.NET MVC。 我也很确定答案会出现在Javascript,jQuery(和jQueryUI)领域的某些地方,但我还没有机会学习。

在我们当前的Windows应用程序中,我们有使用选项卡控件的表单,其中每个选项卡控件都有大量用于数据输入的控件。 所以,下面是我需要能够做的问题类型(在客户端)

  1. 有条件地要求例如需要表格上的一个或多个控件子集。 因此,例如,因为在下拉框中选择了某个值,所以触发上述规则,其中必须输入一个或多个控件...或者1,并且有条件地仅需要1个子集。 另外,条件所需控件的子集可以是不同类型的。

我可以继续谈论这个,但我怀疑其他例子会改变答案。

因此,为了清楚起见,我不需要像mvc数据注释那样的事情,我可以使用属性来根据需要或在特定范围内标记特定字段。 我需要将这种类型的验证隐藏在一堆其他验证中。

那么,这种复杂的客户端验证是否有最佳实践解决方案? 是否有一些第三方Javascript库可能允许这个?

在我的Windows应用程序中,我已经能够编写所有派生自公共基类的小包装器规则。 因此,例如,我有一个带addChilren方法的规则,例如,所有允许您添加从基类规则派生的其他对象,或者只是添加其他控件,并且此规则可以在运行时更新为要求1或更多儿童对象......

当然,这条规则“RequireOneOrMore”可以在其他地方重复使用,甚至可以作为孩子传递给其他规则......

我希望其中一些有道理......

所以,当我通过我的mvc书来解决我的Javascript书时,有人可以建议我可以研究哪些选项来实现这一目标吗?

谢谢,乔纳森

我完全同意您的观点,即数据注释在执行复杂验证规则方面非常有限。

但在考虑客户端验证之前,您应该确保所有验证规则,无论多么复杂,至少在服务器上强制执行。 我做复杂的服务器端验证的框架很棒,我建议你使用FluentValidation.NET 它与ASP.NET MVC有很好的集成,允许您处理任意复杂的验证规则。

设置服务器端验证后,您可以开始考虑用户体验,也可以选择提供客户端验证。 对于复杂的规则,我建议你摆脱jquery.unobtrusive.validate.js脚本,然后直接使用jquery.validate.js插件。 这意味着基本上你可以自己为给定的表单编写验证规则:

$('form').validate({
    rules: {
        // ... here you could write your validation rules
        // you could also extend the plugin by writing custom
        // validation methods to handle arbitrarily complex scenarios
    }
});

我邀请您现在阅读documentation of the plugindocumentation of the plugin以熟悉语法。

但是既然你说你是jQuery的新手,在用验证和插件进行任何客户端开发之前,你的第一个任务就是学习jQuery。 一个很好的起点是: http//learn.jquery.com/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM