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

Javascript 如何在ASP.NET MVC 4中进行复杂的客户端数据验证,javascript,.net,asp.net-mvc-4,validation,Javascript,.net,Asp.net Mvc 4,Validation,我是一个长期从事Windows窗体开发的人,我一直在努力思考如何进行web开发。正如标题所说,我非常确定我想继续使用ASP.NET MVC。我还非常确定答案将在Javascript、jQuery(和jQueryUI)领域中的某个地方,我还没有机会学习这些 在我们当前的windows应用程序中,我们有使用选项卡控件的表单,其中每个选项卡控件都有大量用于数据输入的控件。因此,以下是我需要能够解决的问题类型(在客户端) 有条件地要求,例如,表单上的控件子集中的一个或多个是必需的。例如,由于在下拉框中选

我是一个长期从事Windows窗体开发的人,我一直在努力思考如何进行web开发。正如标题所说,我非常确定我想继续使用ASP.NET MVC。我还非常确定答案将在Javascript、jQuery(和jQueryUI)领域中的某个地方,我还没有机会学习这些

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

  • 有条件地要求,例如,表单上的控件子集中的一个或多个是必需的。例如,由于在下拉框中选择了某个值,因此触发上述规则,其中必须输入一个或多个控件。。。或1,且仅子集的1是有条件需要的。此外,条件必需控件的子集可以是不同的类型
  • 我可以继续讲下去,但我怀疑更多的例子会改变答案

    因此,为了清晰起见,我不需要像think I可以对mvc数据注释做什么那样的事情,在mvc数据注释中,我可以使用属性来标记所需的特定字段,或者在特定范围内。我需要在一堆其他验证中嵌入这种类型的验证

    那么,对于这种复杂的客户端验证,有没有最佳实践解决方案?是否有第三方Javascript库允许这样做

    在我的Windows应用程序中,我能够编写小包装器规则,这些规则都派生自一个公共基类。例如,我有一个规则,其方法是
    addChilren
    ,它允许您添加从基类规则派生的其他对象,或者仅添加其他控件,并且可以在运行时更新该规则,以需要一个或多个子对象

    当然,这个规则“RequireOnOrmore”可以在其他地方重用,甚至可以作为子规则传递给其他规则

    我希望其中一些是有意义的

    所以,当我在我的mvc书籍中学习Javascript时,有人能建议我可以研究哪些选项来实现这一点吗

    谢谢,
    jonathan

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

    但在考虑客户端验证之前,您应该确保所有验证规则(无论多么复杂)至少在服务器上强制执行。我建议您使用一个非常棒的框架来进行复杂的服务器端验证。它与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
        }
    });
    
    我邀请您现在就阅读,以熟悉语法

    但是,既然您说您对jQuery非常陌生,那么在使用验证和插件进行任何客户端开发之前,您的第一项任务将是学习jQuery。一个很好的起点是: