据我所知,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/