C# 什么时候应该使用远程属性与自定义属性
若我并没有弄错的话,远程属性Validate在值更改时执行,所以它不需要您按Submit键,但自定义属性要求我们编写JQuery来调用适配器C# 什么时候应该使用远程属性与自定义属性,c#,jquery,asp.net-mvc,C#,Jquery,Asp.net Mvc,若我并没有弄错的话,远程属性Validate在值更改时执行,所以它不需要您按Submit键,但自定义属性要求我们编写JQuery来调用适配器 所以我的问题是为什么不一直使用远程属性 远程属性的主要目的是在控制器中执行验证逻辑,同时保持在同一页面上。它通常在需要访问外部资源时使用(例如,在注册时检查新用户是否未使用现有用户名),但也可能是因为逻辑太复杂,不值得在客户端脚本中复制/维护它 >关于代码>远程属性>代码>的两个重要事项。 它使用ajax调用服务器端方法。最初 ajax调用是在.blur
所以我的问题是为什么不一直使用远程属性 远程属性的主要目的是在控制器中执行验证逻辑,同时保持在同一页面上。它通常在需要访问外部资源时使用(例如,在注册时检查新用户是否未使用现有用户名),但也可能是因为逻辑太复杂,不值得在客户端脚本中复制/维护它
>关于代码>远程属性>代码>的两个重要事项。
.blur()
事件中编辑控件后进行的,
但此后在每个.keyup()
事件上使用
RemoteAttribute
将对性能产生影响ValidationAttribute
,并实现IClientValidatable
(并包括添加客户端规则所需的脚本)因此,您可以同时获得客户端和服务器端验证,而无需对服务器进行不必要的调用
请参阅一篇关于实现自定义验证属性的好文章。
RemoteAttribute
用于调用控制器方法来执行验证。如果可以使用javascript(出于性能原因)在客户端上执行验证,则您不会这样做。请确保您的说法是正确的,但我指的是带有客户端验证的CustomAttribute。抱歉,我不理解您的评论。如果自定义ValidationAttribute实现了IClientValidable
,则向jQuery.validator
添加必要的方法,以便在客户端上执行客户端验证。使用RemoteAttribute
只会显著降低性能(并且不会给您最重要的服务器端验证),现在它是有意义的,如果您将其作为答案,我会将其标记为答案