Validation
ASP.NET_MVC

ASP.NET MVCで検証属性を自作する

ASP.NET MVCが提供している検証属性だけじゃ足りない!!!

そういう場合は自作する必要があります。

つくりかた

ValidationAttributeクラスを継承したクラスを作成し、IsValidメソッドをオーバーライドします。

クラス名は「HogeAttribute」のように末尾にAttributeを付与してください。

using System;
using System.ComponentModel.DataAnnotations;
using System.Text.RegularExpressions;

namespace Sample.CustomValidationAttribute
{
    /// <summary>
    /// 入力値が「yyyy/MM/dd」形式であるかを検証します。
    /// </summary>
    public class DateAttribute : ValidationAttribute
    {
        public override bool IsValid(object value)
        {
            if (value != null)
            {
                return Regex.IsMatch(value.ToString(), @"^(\d{4})/(0[1-9]|1[0-2])/(0[1-9]|[12][0-9]|3[01])$");
            }
            return false;
        }
    }
}

つかいかた

自作した検証は元々ある検証と同じように使用することが出来ます。

using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using Sample.CustomValidationAttribute;

namespace Sample.Dto
{
    public class PersonViewModel
    {
        [DisplayName("生年月日")]
        [Required]  // これはもともとあるやつ
        [Date]  // これ自作したやつ
        public string BirthDay { get; set; }
    }
}