asp.net-mvc – 组合数据注释属性
发布时间:2020-12-16 04:32:58 所属栏目:asp.Net 来源:网络整理
导读:我有一些属性的集合,这些属性应该总是一起用于UI和验证.例如,对于货币字段,我必须添加UI提示,验证逻辑和显示格式.结果,我的班级看起来非常拥挤. public class Model{ [UIHint("Currency")] [DisplayFormat(ApplyFormatInEditMode = true,DataFormatString =
我有一些属性的集合,这些属性应该总是一起用于UI和验证.例如,对于货币字段,我必须添加UI提示,验证逻辑和显示格式.结果,我的班级看起来非常拥挤.
public class Model { [UIHint("Currency")] [DisplayFormat(ApplyFormatInEditMode = true,DataFormatString = "{0:C}")] [CustomRegularExpression(Currency.ValidationPattern,OnlyOnClientSide = true)] [SetMetaDataForCustomModelBinder("Currency")] public double? Cost { get; set; } [UIHint("Currency")] [DisplayFormat(ApplyFormatInEditMode = true,OnlyOnClientSide = true)] [SetMetaDataForCustomModelBinder("Currency")] public double? Profit { get; set; } } 有没有办法创建一个[Currency]属性,将所有这些属性的功能组合成一个简单的属性?我的目标是创建以下内容: public class Model { [Currency] public double? Cost { get; set; } [Currency] public double? Profit { get; set; } } 编辑:为了澄清,我已经尝试创建自定义属性,但没有暴露的接口允许我实现这些不同属性的功能.我可以继承ValidationAttribute,但是我也不能将UIHintAttribute子类化.我还缺少任何其他潜在的解决方案? 解决方法
根据
post以及帖子中对Phil Haack的
article的引用,您可以创建自定义的AssociatedMetadataProvider,它可以添加您需要的属性.你会得到这样的东西:
public class MyCustomMetadataProvider : DataAnnotationsModelMetadataProvider { protected override ModelMetadata CreateMetadata(IEnumerable<Attribute> attributes,Type containerType,Func<object> modelAccessor,Type modelType,string propertyName) { var attributeList = attributes.ToList(); if (attributeList.OfType<CurrencyAttribute>().Any()) { attributeList.Add(new UIHintAttribute("Currency")); attributeList.Add(new DisplayFormatAttribute { ApplyFormatInEditMode = true,DataFormatString = "{0:C}" }); } return base.CreateMetadata(attributeList,containerType,modelAccessor,modelType,propertyName); } } 并在应用程序启动事件中: ModelMetadataProviders.Current = new MyCustomMetadataProvider(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ASP.NET Web部署项目是否存活?
- net core 项目提示未能加载导入的项目文件
- asp.net-mvc – 从当前访问者获取CultureInfo并基于此设置资
- asp.net – 如何让Autofac在Orchard CMS中执行属性注入
- asp.net – ReportViewer – 隐藏PDF导出
- Windows Server AppFabric分布式缓存研究
- entity-framework – Ninject WebAPI由于DbContext已被处理
- asp.net – 使用Html而不是csHtml
- .net – 如何检测是否从Server.Execute调用了aspx页面?
- asp.net – 如何使用WebApi将POSTHttpRoute POST到自定义操
推荐文章
站长推荐
- asp.net – 我可以在sharepoint网站上使用多个母
- asp.net mvc CodeFirst模式数据库迁移步骤详解
- asp.net-mvc-2 – 带有数组/列表的ASP.NET MVC 2
- asp.net-mvc – 当它被称为DocumentationControl
- asp.net – 如何阻止IIS解码URL
- asp.net – 默认模型绑定器和包含列表的复杂类型
- asp.net-mvc – ASP.NET在基本控制器中重定向
- asp.net-mvc – 如果使用LINQ to SQL,还有什么理
- asp-classic – 是代码页65001和utf-8同样的东西
- ASP.NET页面在IE缓存的清除办法
热点阅读