/MvcBasic/Annotations/MinLengthAttribute.cs
=====================================
using System;
using System.ComponentModel.DataAnnotations;
using System.Globalization;
namespace MvcBasic.Annotations
{
public class MinLengthAttribute: ValidationAttribute
{
private readonly int _data;
public MinLengthAttribute(int data) : base("{0}는 반드시 {1}자 이상 입력해야 합니다. ")
{
_data = data;
}
public override bool IsValid(object value)
{
var str = value as string;
if (!String.IsNullOrEmpty(str))
{
// 넘겨온 값이 3자 이하이면 에러
if (str.Length < _data)
{
return false;
}
}
return true;
}
public override string FormatErrorMessage(string name)
{
return String.Format(CultureInfo.CurrentCulture, ErrorMessageString, name, _data);
}
}
}
/MvcBasic/Areas/Board/Models/Basic_Validation.cs
=====================================
using System.ComponentModel.DataAnnotations;
namespace MvcBasic.Areas.Board.Models
{
// 아래 경로의 아티클 참고함
// http://weblogs.asp.net/scottgu/archive/2010/01/15/asp-net-mvc-2-model-validation.aspx
// Basic 클래스에서 사용할 유효성 검사 로직은 Basic_Validation에서 처리
[MetadataType(typeof(Basic_Validation))]
public partial class Basic
{
public class Basic_Validation
{
[Required(ErrorMessage="이름을 입력하세요...")]
[StringLength(25, ErrorMessage = "이름은 25자 이하로 입력하세요...")]
//[MvcBasic.Annotations.MinLength(3)] // 이름은 3자 이상
[MvcBasic.Annotations.MinLength(3, ErrorMessage="이름을 정확히 입력하시오.")] // 이름은 3자 이상
public string Name { get; set; }
[Required(ErrorMessage="암호를 입력하세요....")]
public string Password { get; set; }
[RegularExpression("\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*",
ErrorMessage = "이메일 형식이 틀립니다...")]
public string Email { get; set; }
}
}
// Custom Validator 만드는 로직은 따로 제공...
// 위 코드 중 [MvcBasic.Annotations.MinLength(3)] 부분
}