Asp.net mvc MVC3.NET-何时使用客户端验证方案

Asp.net mvc MVC3.NET-何时使用客户端验证方案,asp.net-mvc,asp.net-mvc-3,validation,Asp.net Mvc,Asp.net Mvc 3,Validation,在给出一些建议后,我的解释是否适用于以下情况: 创建/更新用户记录的简单屏幕(两个单独的视图-创建视图和更新视图) 屏幕包含3个字段: 名称 电话号码, 国民保险号码(NI号码) 我们已确认: 电话号码(确保格式正确) NI编号(确保格式正确) 数据库中有一个关于NI编号的唯一索引 这是我的理解-完全开放的人告诉我这是错误的或有更好的方法 因此,如果输入了新记录,我们需要检查NI编号是否唯一-因此我们必须发布并运行服务器端验证-这意味着Javascript验证是不相关的-因此所有验证都必须在服务

在给出一些建议后,我的解释是否适用于以下情况:

创建/更新用户记录的简单屏幕(两个单独的视图-创建视图和更新视图)

屏幕包含3个字段: 名称 电话号码, 国民保险号码(NI号码)

我们已确认: 电话号码(确保格式正确) NI编号(确保格式正确)

数据库中有一个关于NI编号的唯一索引

这是我的理解-完全开放的人告诉我这是错误的或有更好的方法

因此,如果输入了新记录,我们需要检查NI编号是否唯一-因此我们必须发布并运行服务器端验证-这意味着Javascript验证是不相关的-因此所有验证都必须在服务器端进行

如果从数据库检索记录,然后进行更新,则如果NI编号未更新,则客户端验证是相关的

因此,对于创建视图,我不需要任何客户端验证例程,因为我始终需要确保NI编号是唯一的,而对于更新视图,我确实需要客户端验证例程,因为NI编号可能不会更新,但我们仍希望验证其他字段(必要时)客户端,以尽量减少网络流量

我说得对吗


感谢

客户端验证适用于基本规则,如必填字段、电话格式、范围之间的号码等。客户端验证的最大优点是服务器开销较小(因为不会发布未完成的表单)并且将为您的客户提供更好的体验,因为他不需要等待服务器响应

服务器端验证适用于基本规则和复杂规则,如唯一字段、在其他系统中查找等。因此,是的,您将复制这些规则


我目前正在使用+,它使我能够使用客户端和服务器端验证,而无需重复代码。如果验证比较复杂,则在cient上不可用,但基本验证将在双方执行。最棒的是,我只需要编写一次规则。顺便说一句,它还可用于数据批注,即ASP.NET MVC 3默认验证引擎。

客户端验证用于基本规则,如必填字段、电话格式、范围之间的数字等。客户端验证的最大优点是服务器的开销较小(因为不完整的表单将永远不会被发布)并将为您的客户提供更好的体验,因为他不需要等待服务器响应

服务器端验证适用于基本规则和复杂规则,如唯一字段、在其他系统中查找等。因此,是的,您将复制这些规则


我目前正在使用+,这使我能够使用客户端和服务器端验证,而无需重复代码。如果验证很复杂,它将无法在cient上使用,但基本验证将在两侧执行。最棒的是,我只需要编写一次此规则。顺便说一句,它还可以与数据注释一起使用ions是ASP.NET MVC 3默认的验证引擎。

感谢您的快速响应-只是为了澄清-复杂的验证,如唯一性,即NI编号是在服务器上完成的,因此客户端验证代码在这种情况下变得无关紧要-因此让服务器承担所有验证。如果现有记录已更新,NI未更改。为什么与此无关?客户端验证可防止在名称或电话号码不正确时访问服务器。只有当这些字段正确时,您才必须在服务器端检查NI(当然也可以通过Ajax完成)感谢您的快速响应-只是为了澄清-复杂的验证,如唯一性,即NI编号是在服务器上完成的,因此客户端验证代码在这种情况下变得无关紧要-因此让服务器进行所有验证。如果现有记录被更新且NI没有更改,则客户端代码是相关的。W为什么不相关?当名称或电话号码不正确时,客户端验证可以防止访问服务器。只有当这些字段正确时,您才需要检查服务器端的NI(当然,这也可以通过Ajax完成)