我不知道你能不能用
DataTypeAttributes
但作为一种简单的方法来检查它是否是有效的电子邮件标记,您可以使用以下代码:
try {
var addr = new System.Net.Mail.MailAddress(email);
return addr.Address == email;
}
catch {
return false;
}
编辑1:
正如马克·文斯所说
here
在他的博客上,你可以创造一个新的
ActionFilterAttribute
当你想在你的动作参数中有属性的时候。
public class ValidateActionParametersAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext context)
{
var descriptor = context.ActionDescriptor as ControllerActionDescriptor;
if (descriptor != null)
{
var parameters = descriptor.MethodInfo.GetParameters();
foreach (var parameter in parameters)
{
var argument = context.ActionArguments[parameter.Name];
EvaluateValidationAttributes(parameter, argument, context.ModelState);
}
}
base.OnActionExecuting(context);
}
private void EvaluateValidationAttributes(ParameterInfo parameter, object argument, ModelStateDictionary modelState)
{
var validationAttributes = parameter.CustomAttributes;
foreach (var attributeData in validationAttributes)
{
var attributeInstance = CustomAttributeExtensions.GetCustomAttribute(parameter, attributeData.AttributeType);
var validationAttribute = attributeInstance as ValidationAttribute;
if (validationAttribute != null)
{
var isValid = validationAttribute.IsValid(argument);
if (!isValid)
{
modelState.AddModelError(parameter.Name, validationAttribute.FormatErrorMessage(parameter.Name));
}
}
}
}
}
Actions
. 因为
ModelState
-类的创建是为了使检查
传入绑定
是否有效,而不仅仅是验证随机对象。
Here
更重要的是。
AddEmail
是“正常”方法而不是
Action
如果你想了解更多关于验证的内容,可以看看
this
布拉德·威尔逊的博客文章。