在ASP.NET MVC3中验证表单时,可以使用自定义验证器来忽略某些属性。以下是一个简单的示例:
public class IgnoreAttribute : Attribute
{
public bool Ignore { get; set; }
public IgnoreAttribute(bool ignore = true)
{
Ignore = ignore;
}
}
IgnoreAttribute
属性:public class MyModel
{
[Required]
public string Name { get; set; }
[Ignore(true)]
public string IgnoredProperty { get; set; }
}
IgnoreAttribute
属性的属性:public class IgnoreAttributeModelValidatorProvider : DataAnnotationsModelValidatorProvider
{
protected override IEnumerable<ModelValidator> GetValidators(ModelMetadata metadata, ControllerContext context, IEnumerable<Attribute> attributes)
{
var baseValidators = base.GetValidators(metadata, context, attributes);
var ignoreAttribute = attributes.OfType<IgnoreAttribute>().FirstOrDefault();
if (ignoreAttribute != null && ignoreAttribute.Ignore)
{
return Enumerable.Empty<ModelValidator>();
}
return baseValidators;
}
}
Global.asax.cs
文件中,将自定义验证器添加到ModelValidatorProviders
集合中:protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
ModelValidatorProviders.Providers.Add(new IgnoreAttributeModelValidatorProvider());
}
现在,在使用MyModel
模型类进行验证时,IgnoredProperty
属性将被忽略。
推荐的腾讯云相关产品:
产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云