0

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

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

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

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

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

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

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

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

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

所以,当我通过我的 mvc 书来编写我的 Javascript 书时,任何人都可以建议我可以研究哪些选项来实现这一点?

谢谢,乔纳森

4

1 回答 1

2

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

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

Once you have setup server side validation you could start thinking about the user experience and optionally provide client side validation as well. For complex rules I would recommend you to get rid of the jquery.unobtrusive.validate.js script and then use the jquery.validate.js plugin directly. This means that basically you could write the validation rules yourself for a given form:

$('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
    }
});

I invite you to read the documentation of the plugin now to familiarize yourself with the syntax.

But since you said that you are very new to jQuery, before doing any client side development with validation and plugins, your first task will be to learn jQuery. A great place to start is here: http://learn.jquery.com/

于 2013-02-20T12:54:29.117 回答