3

ASP.NET MVC 2は、次のようなDataAnnotation属性に基づく検証をサポートします。

public class User
{
    [Required]
    [StringLength(200)]
    public string Name { get; set; }
}

純粋な.NETのみを使用して(MVCバインディング、コントローラーメソッドなどを使用せずに)、現在のモデルの状態が有効であることを確認するにはどうすればよいですか?

理想的には、それは単一の方法になります。

bool IsValid(object model);
4

1 に答える 1

7

このコード サンプルは、xVal に関する Steve Sanderson のブログからのものです (DataAnnotationsAttribute使用してプロパティを検証します)。基本的に、リフレクションを使用して属性を列挙し、IsValid()をチェックするだけです:.

internal static class DataAnnotationsValidationRunner
{
    public static IEnumerable<ErrorInfo> GetErrors(object instance)
    {
        return from prop in TypeDescriptor.GetProperties(instance).Cast<PropertyDescriptor>()
               from attribute in prop.Attributes.OfType<ValidationAttribute>()
               where !attribute.IsValid(prop.GetValue(instance))
               select new ErrorInfo(prop.Name, attribute.FormatErrorMessage(string.Empty), instance);
    }
}
于 2009-10-30T14:56:27.773 に答える