asp.net-mvc – ASP.NET MVC ModelMetaData:有没有办法基于RequiredAttri
|
Brad Wilson在ASP.NET MVC的新ModelMetaData上发布了一个很棒的博客系列:
在其中,他描述了ModelMetaData类现在在Views和模板化助手中的暴露方式.我想做的是在窗体域标签旁边显示一个星号,如果该字段是必需的,那么我考虑使用ModelMetaData的IsRequired属性.但是,对于所有非空值属性,IsRequired默认为true,而对所有可空属性为false.问题是字符串始终为空,因此IsRequired属性对于字符串始终为false.有人知道如何覆盖IsRequired如何设置的默认值?或者,我想到利用已经使用我的属性来修饰的RequiredAttribute属性,但是RequiredAttribute似乎没有通过ModelMetaData类公开.有人知道如何解决这个问题吗? 提前致谢. 解决方法您需要创建自己的ModelMetadataProvider.以下是使用DataAnnotationsModelBinder的示例public class MyMetadataProvider : DataAnnotationsModelMetadataProvider
{
protected override ModelMetadata CreateMetadata(Collections.Generic.IEnumerable<Attribute> attributes,Type containerType,Func<object> modelAccessor,Type modelType,string propertyName)
{
var _default = base.CreateMetadata(attributes,containerType,modelAccessor,modelType,propertyName);
_default.IsRequired = attributes.Where(x => x is RequiredAttribute).Count() > 0;
return _default;
}
}
然后在Global.asax中的AppStartup中,您将要将以下内容作为默认元数据提供程序连接MyMetadataProvider: ModelMetadataProviders.Current = new MyMetadataProvider(); (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 您有任何免费的.Net托管代码将DocX转换为PDF?
- .net – %中的含义是什么:和%=有什么区别?
- asp.net-core – 程序集中找不到入口点’Microsoft.EntityF
- asp.net – 在更新面板中自动上传文件到服务器第一次不起作
- asp.net-mvc – Azure网站上的字体文件404,看似正确的MIME
- 如何在page_Load函数中设置的asp.net中显示变量值
- asp.net – 每个人如何存储连接字符串?
- asp.net-mvc – asp.net mvc中HttpUnauthorizedResult上的默
- asp.net-mvc – 即使使用静态机器密钥,HttpAntiForgeryExce
- asp.net-mvc – ASP.Net MVC中的实时视频聊天录制解决方案
- 最好的asp.net日历/日程安排组件?
- asp.net-mvc – 如何创建ELMAH SQL Server数据库
- azure – 错误System.BadImageFormatException服
- asp.net – System.Web.HttpException:请求超时
- asp.net – 如何使用转换语法更改web.config设置
- asp.net – 在部署过程中如何显示维护页面?
- asp.net – UpdatePanel异常处理
- asp.net-mvc – RequireHttps导致Amazon Elastic
- 为什么我的iSeries / ASP.NET MVC 4应用程序中没
- asp.net – 地理位置网络服务建议
