.NET 4 和Silverlight 中可以使用以下方法:

public static void Validate(this Entity entity)
{
    // prepare the result
    var validationResults = new List<ValidationResult>();
    // create a validation context
    var validationContext = new ValidationContext(entity, null, null);
    // validate
    Validator.TryValidateObject(entity, validationContext, validationResults);
    // reset the validation errors of the entity
    entity.ValidationErrors.Clear();
    foreach (var error in validationResults)
        entity.ValidationErrors.Add(error);
}

.NET 3.5中的方法:

public static class EntityValidator
{
    public static IEnumerable<ErrorField> GetErrors(object instance)
    {
        var t = instance.GetType();
        var typeDescriptor = new AssociatedMetadataTypeTypeDescriptionProvider(t).GetTypeDescriptor(t);
 
        return from prop in typeDescriptor.GetProperties().Cast<PropertyDescriptor>()
                 from attribute in prop.Attributes.OfType<ValidationAttribute>()
                 where !attribute.IsValid(prop.GetValue(instance))
                 select new ErrorField(prop.Name, attribute.FormatErrorMessage(string.Empty));
    }  
}
 
[Serializable]
public class ErrorField
{
    public string ID { get; set; }
     
    public string Msg { get; set; }
 
    public ErrorField(string id, string msg)
    {
        this.ID = id;
        this.Msg = msg;
    }
 
 
}

ValidationContext的更多相关文章

  1. [.NET] 使用ValidationContext快速进行模型资料的验证

    在进行WebAPI功能开发的时候,一般传统的验证资料是否合法的方式,都是透过if/else的方式进行判断若是使用ValidationContext,就可以省去很多自行撰写程式码的工作 要使用Valid ...

  2. [.NET] 使用VALIDATIONCONTEXT快速进行模型资料的验证 》简单xml创建-json转xml

    [.NET] 使用VALIDATIONCONTEXT快速进行模型资料的验证 在进行WebAPI功能开发的时候,一般传统的验证资料是否合法的方式,都是透过if/else的方式进行判断若是使用Valida ...

  3. C# 中参数验证方式的演变

    一般在写方法的时候,第一步就是进行参数验证,这也体现了编码者的细心和缜密,但是在很多时候这个过程很枯燥和乏味,比如在拿到一个API设计文档的时候,通常会规定类型参数是否允许为空,如果是字符可能有长度限 ...

  4. NET Core-学习笔记(三)

    这里将要和大家分享的是学习总结第三篇:首先感慨一下这周跟随netcore官网学习是遇到的一些问题: a.官网的英文版教程使用的部分nuget包和我当时安装的最新包版本不一致,所以没法按照教材上给出的列 ...

  5. 我这么玩Web Api(二):数据验证,全局数据验证与单元测试

    目录 一.模型状态 - ModelState 二.数据注解 - Data Annotations 三.自定义数据注解 四.全局数据验证 五.单元测试   一.模型状态 - ModelState 我理解 ...

  6. ASP.NET MVC5----常见的数据注解和验证

    只要一直走,慢点又何妨. 在使用MVC模式进行开发时,数据注解是经常使用的(模型之上操作),下面是我看书整理的一些常见的用法. 什么是验证,数据注解 验证 从全局来看,发现逻辑仅是整个验证的很小的一部 ...

  7. ASP.NET MVC Model验证(五)

    ASP.NET MVC Model验证(五) 前言 上篇主要讲解ModelValidatorProvider 和ModelValidator两种类型的自定义实现, 然而在MVC框架中还给我们提供了其它 ...

  8. ASP.NET Core 中文文档 第四章 MVC(2.2)模型验证

    原文:Model Validation 作者:Rachel Appel 翻译:娄宇(Lyrics) 校对:孟帅洋(书缘) 在这篇文章中: 章节: 介绍模型验证 验证 Attribute 模型状态 处理 ...

  9. ASP.NET MVC5中的Model验证

    Model验证是ASP.NET MVC中的重要部分,它主要用于判断输入的数据类型及值是否符合我们设定的规则,这篇文章就介绍下ASP.NET MVC中Model验证的几种方式. 后台验证 DataAnn ...

随机推荐

  1. keil 工程中多文件编译时全局变量怎么引用

    由于代码较多时,为了代码的工整以及易读性,往往将代码拆分成模块,并书写头文件.但keil中定义全局变量往往是一件头疼的事情. (1)xx.h文件中基本书写的是管脚定义和函数声明,全局变量不能定义在头文 ...

  2. WebSorcket学习

    传统 Web 模式在处理高并发及实时性需求的时候经常采用以下方案: 1.轮询,原理简单易懂,就是客户端通过一定的时间间隔以频繁请求的方式向服务器发送请求,来保持客户端和服务器端的数据同步.问题很明显, ...

  3. ResponseHelper

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using Cemetery_ ...

  4. Myeclipse在启动Tomcat服务器的时候总是进入debug视图的解决方法

    最近调试程序,由于出现过一些错误,在调试的时候,更改过一些东西,但是后来在myeclipse下启动Tomcat服务器的时候,自动的跳入到debug视图了(以前是一启动Tomcat服务器后,直接就加载t ...

  5. JavaScript 兼容处理IE67之 !"a"[0]

    IE67对字符串进行取值需要使用charAt()方法,不能直接通过数组方式的坐标访问: <!DOCTYPE html> <html> <head> <meta ...

  6. mysql 导出,导入数据

     导出     加-d代表只导出表结构 命令行下具体用法如下:  mysqldump -u用户名 -p密码 -d 數據库名 表名 脚本名; 1.导出数据库为dbname的表结构(其中用户名为root, ...

  7. android生成二维码

    新建项目 布局截图如下(一个输入框,一个按钮,一个imageview),输入想要的东西(文字,数字,网站链接等)然后点击按钮生成二维码,然后可以扫描识别. 首先需要一个谷歌的一个jar包 activi ...

  8. 更改Tomcat startup.bat启动窗口名称

    通常在Tomcat bin目录下用startup.bat启动Tomcat ,启动窗口显示的Title是Tomcat 如果遇到一个服务器上多个Tomcat的话就会容易混淆.更改方法如下: 1 在bin目 ...

  9. C# Timer执行方法

    private void button3_Click(object sender, EventArgs e) { System.Timers.Timer t = new System.Timers.T ...

  10. 【设计模式 - 15】之解释器模式(Interpreter)

    1      模式简介 解释器模式允许我们自定义一种语言,并定义一个这种语言的解释器,这个解释器用来解释语言中的句子.由于这种模式主要用于编译器的编写,因此在日常应用中不是很常用. 如果一种特定类型的 ...