【问题标题】:How to do complex client-side data validation in ASP.NET MVC 4如何在 ASP.NET MVC 4 中进行复杂的客户端数据验证
【发布时间】:2013-02-05 11:34:46
【问题描述】:

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

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

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

我可以继续讨论这个问题,但我怀疑其他示例会改变答案。

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

那么,对于这种复杂的客户端验证,是否有最佳实践解决方案?是否有一些 3rd 方 Javascript 库可能允许这样做?

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

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

我希望其中一些有意义....

那么,当我通过我的 mvc 书来编写我的 Javascript 书时,任何人都可以建议我可以研究哪些选项来完成此任务?

谢谢, 乔纳森

【问题讨论】:

    标签: javascript .net asp.net-mvc-4 validation


    【解决方案1】:

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

    但是在考虑客户端验证之前,您应该确保所有验证规则,无论多么复杂,至少都在服务器上强制执行。我建议您进行复杂服务器端验证的出色框架是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 plugin 以熟悉语法。

    但是由于您说您对 jQuery 很陌生,所以在使用验证和插件进行任何客户端开发之前,您的首要任务是学习 jQuery。一个很好的起点在这里:http://learn.jquery.com/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-19
      • 2013-12-14
      • 2010-09-14
      • 2014-07-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多