应该何时使用远程属性和自定义属性

时间:2016-03-14 21:43:32

标签: c# jquery asp.net-mvc

如果我没有弄错,远程属性验证执行值更改,因此它不要求您按提交,但是自定义属性要求我们写JQuery来调用适配器

所以我的问题是为什么不一直使用远程属性?

1 个答案:

答案 0 :(得分:2)

RemoteAttribute的主要目的是在控制器中执行验证逻辑,同时保持在同一页面上。通常在需要访问外部资源时使用它(例如,在注册时检查新用户是否使用现有用户名),但也可能是因为逻辑太复杂而无法复制/在客户端脚本中维护它。

有关RemoteAttribute的两个重要事项。

  1. 它使用ajax来调用服务器端方法。最初的 在.blur()事件中编辑控件后进行ajax调用, 但此后每次.keyup()事件都要使用 RemoteAttribute将会成为一个表现
  2. 它只提供客户端验证(这应该只是 被认为是一个很好的奖金),你仍然需要实现服务器 侧验证以防止恶意用户绕过客户端 方验证
  3. 如果您编写自定义验证属性,其中验证逻辑可以使用javascript执行,那么您的属性应该继承自ValidationAttribute并实现IClientValidatable(并包含必要的脚本以添加客户端规则这样你就可以得到客户端和服务器端的验证,而不需要对服务器进行不必要的调用。

    请参阅The Complete Guide to Validation in ASP.NET MVC 3 - Part 2以获取有关实施自定义验证属性的好文章。