DataTypeAttribute 検証は MVC2 で機能していますか? 質問する

DataTypeAttribute 検証は MVC2 で機能していますか? 質問する

私の知る限り、System.ComponentModel.DataAnnotations.DataTypeAttributeはMVC v1のモデル検証では機能しません。例えば、

public class Model
{
  [DataType("EmailAddress")]
  public string Email {get; set;}
}

上記のコードでは、Email プロパティは MVC v1 では検証されません。MVC v2 では機能しますか?

ベストアンサー1

[DataType("EmailAddress")]デフォルトでは検証に影響しません。これはIsValidこの属性のメソッドです (リフレクタから):

public override bool IsValid(object value)
{
    return true;
}

これは、電子メールを検証するためのカスタム DataTypeAttribute の例です (このサイトから取得)http://davidhayden.com/blog/dave/archive/2009/08/12/CustomDataTypeAttributeValidationCustomDisplay.aspx):

[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple  = false)]
public class EmailAddressAttribute : DataTypeAttribute
{
    private readonly Regex regex = new Regex(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*", RegexOptions.Compiled);

    public EmailAddressAttribute() : base(DataType.EmailAddress)
    {

    }

    public override bool IsValid(object value)
    {

        string str = Convert.ToString(value, CultureInfo.CurrentCulture);
        if (string.IsNullOrEmpty(str))
            return true;

        Match match = regex.Match(str);   
        return ((match.Success && (match.Index == 0)) && (match.Length == str.Length));
    }
}

おすすめ記事