asp.net-mvc – 可以在运行时更改数据注释吗? (ASP.NET MVC的[Range] [Required]
发布时间:2020-05-23 23:40:16 所属栏目:asp.Net 来源:互联网
导读:通常,类成员的ModelBinding验证可能就像这个例子一样: public Class someclass{ [StringLength(50)] public string SomeValue { get; set; }} SomeValue最多限制为50个字符. 是否可以在运行时将常量(50)更改为其他内容,例如,在构造该类的每个实例期间,以便可
|
通常,类成员的ModelBinding验证可能就像这个例子一样: public Class someclass
{
[StringLength(50)]
public string SomeValue { get; set; }
}
SomeValue最多限制为50个字符. 是否可以在运行时将常量(50)更改为其他内容,例如,在构造该类的每个实例期间,以便可以使用具有不同StringLength限制的不同实例? 如果是这样,那怎么做呢? 解决方法是.但唯一的方法是创建自己的DataAnnotationsModelValidatorProvider实现,然后在Global.ascx.cs中注册它.你不能简单地在运行时删除属性但是中断读取它们的MVC内部:public class ConventionModelValidatorProvider : DataAnnotationsModelValidatorProvider
{
protected override IEnumerable<ModelValidator> GetValidators(ModelMetadata metadata,ControllerContext context,IEnumerable<Attribute> attributes)
{
List<Attribute> newAttributes = new List<Attribute>(attributes);
if( mycondition == true )
{
//get rid of the existing attribute
newAttributes.Remove(newAttributes.OfType<StringLengthAttribute>().First());
//add a new one
newAttributes.Add( new StringLengthAttribute(5324));
}
return base.GetValidators(metadata,context,newAttributes);
}
}
寄存器: ModelValidatorProviders.Providers.Clear(); ModelValidatorProviders.Providers.Add( new CustomValidatorProvider() ); (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 在.NET .NET中ctl00是常量吗?
- asp.net – NHibernate – ManagedWebSessionContext和WebS
- asp.net-mvc – 如何使用EditorForModel()来装饰我的ASP.NE
- 使用ActiveDirectory授权与ASP.NET身份
- asp.net – 在会话中存储购物车
- asp.net – SSRS与自定义Web UI
- asp.net-core – 外部包中的模型显示在swagger文档中
- asp.net-mvc-4 – ASP.NET MVC 4 ScriptBundle返回空
- MS Chart与ASP.NET图表类型“列”不显示轴x标签,如果图表中
- asp.net-mvc – 单元测试中的ViewResult.ViewName属性为空
推荐文章
站长推荐
热点阅读
