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; }
}
}
関連情報
C# や ASP.NET に関連する記事を以下にまとめています。
テレワークしている方には以下の記事がおすすめです。
私のお気に入りは REALFORCE と R&F BELX のルイボスティーです。
エンジニア初心者向けに本当に使えるツールを紹介しています。
特に Notion はタスク管理に本当に便利です。