c# - DataTypeAttribute 验证是否在 MVC2 中工作?

标签 c# asp.net-mvc validation email data-annotations

据我所知,System.ComponentModel.DataAnnotations.DataTypeAttribute 在 MVC v1 的模型验证中不起作用。例如,

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

在上面的代码中,Email 属性不会在 MVC v1 中被验证。它在 MVC v2 中工作吗?

最佳答案

[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));
    }
}

关于c# - DataTypeAttribute 验证是否在 MVC2 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2391423/

相关文章:

c# - 创建适用于 System.Object 的扩展方法的良好做法?

c# - 我怎样才能优化这个递归方法

c# - 使用 EF 6 和 Oracle.ManagedDataAccess 时表不存在

validation - Vue.js Vee Validate 如何在元素范围内进行验证

matlab - 测试 varargin 是否存在字符串模式

wpf - 控件模板中的 ValidationRules

c# - Windows 窗体组合框 - 数据绑定(bind)到多个属性

c# - 复杂 RavenDb 对象中的延迟加载

asp.net-mvc - asp.net mvc 的区域级安全性

c# - asp.net中如何给图片相对路径