我们知道ASP.NET mvc提供一些表单的验证标注,比如必填属性RequiredAttribute

但是这个属性不适合选择框的必选

但是很多时候,我们却是需要一些必选的单选框

比如网站注册的时候,需要用户同意网站的一些规定等等

为此,我封装了一个BooleanRequiredAttribute的标注类,

该类可以标注那些框必填

具体类如下:

public class BooleanRequiredAttribute : ValidationAttribute, IClientValidatable
{
public bool Value { get; set; }
public override bool IsValid(object value) { res = value != null && Value; return res; } public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
ModelClientValidationRule rule = new ModelClientValidationRule
{
ValidationType = "brequired",
ErrorMessage = FormatErrorMessage(metadata.GetDisplayName())
};
rule.ValidationParameters.Add("br", res);
yield return rule;
} public bool res { get; set; }
}

支持客户端和服务器端验证

然后外貌需要添加一个前端的js验证方法

方法也非常简单

//布尔类型必勾选
$.validator.addMethod("brequired", function (value, element, param) {
return element.checked;
});
$.validator.unobtrusive.adapters.addSingleVal("brequired", "br");

就几行代码,

这样,当我们使用的时候

只需要在实体上面进行标注就可以了

比如:

        [BooleanRequired]
[Display(Name = "必选同意")]
public bool Agree { get; set; }

然后在视图上面

<a id="showclause" href="javascript:void(0);">网站服务条款</a>
@Html.CheckBoxFor(m => m.Agree)同意&nbsp;
@Html.ValidationMessageFor(m => m.Agree)

最后,我们看效果

是不是很实用呢?MVC真的挺强大的

欢迎大家 扩展更多的这些验证类

感谢阅读.....

最新文章

  1. php中实现的一个curl批处理的实例
  2. mysql
  3. android launchmode(四种启动模式)应用场景及实例
  4. Javascript中的Keycode值列表
  5. 如何在eclipse中安装Jess
  6. Uva_10253 Series-Parallel Networks
  7. Android开发文摘集合1
  8. XJOI网上同步训练DAY1 T3
  9. [JS思路]运动框架思路
  10. Linux操作命令集
  11. FusionCharts封装-Data
  12. kafka的安装以及基本用法
  13. java第八周作业
  14. 为共享服务器配置Oracle数据库
  15. windows/browser ----&gt; cmd命令/powershell命令/chrome插件vimuim命令
  16. ConcurrentHashMap源码解析(2)
  17. ThinkPHP的URL重写时遇到No input file specified的解决方法
  18. mysql 导入 csv文件中数据,只能导入第一行
  19. easyui grid 增加合计行
  20. 关于ARM指令中位置无关和位置相关代码的认识【转】

热门文章

  1. 斯坦福第十四课:降维(Dimensionality Reduction)
  2. 关于用CSS3画图形的一些思考
  3. Java实验二20135104
  4. sql关键字的解释执行顺序
  5. 安装Tomcat服务器
  6. PHP接口使用
  7. redis和ssdb读取性能对比
  8. 用msbuild跑xunit单元测试
  9. 【译】用Fragment创建动态的界面布局(附Android示例代码)
  10. JPA oneToMany 级联更新