默认设置为DisplayFormatAttribute.ConvertEmptyStringToNull跨网站虚假 [英] Set default for DisplayFormatAttribute.ConvertEmptyStringToNull to false across site

查看:379
本文介绍了默认设置为DisplayFormatAttribute.ConvertEmptyStringToNull跨网站虚假的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

属性,DisplayFormatAttribute.ConvertEmptyStringToNull是true的默认值。我想它默认为false,整个站点(或类或页面将是一件好事)。有没有一种方法,我可以做到这一点,所以我不需要装点每个测试表单字段:

  [DisplayFormat(ConvertEmptyStringToNull = FALSE)]


解决方案

您可以创建自己的自定义模型元数据提供者是这样的:

 公共类CustomModelMetadataProvider:DataAnnotationsModelMetadataProvider
{
    保护覆盖ModelMetadata CreateMetadata(IEnumerable的< System.Attribute>属性,System.Type的containerType,System.Func<对象> modelAccessor,System.Type的modelType,弦乐propertyName的)
    {
        VAR modelMetadata = base.CreateMetadata(属性,containerType,modelAccessor,modelType,propertyName的);
        如果(string.IsNullOrEmpty(propertyName的))返回modelMetadata;        如果(modelType == typeof运算(字符串))
                modelMetadata.ConvertEmptyStringToNull = FALSE;        返回modelMetadata;
    }
}

然后在你的app_start注册吧:

  ModelMetadataProviders.Current =新CustomModelMetadataProvider();

The attribute, DisplayFormatAttribute.ConvertEmptyStringToNull has a default of true. I would like to default it to false for the entire site (or by class or page would be good too). Is there a way I can do this so I don't need to decorate each test form field with:

[DisplayFormat(ConvertEmptyStringToNull=false)]

解决方案

You can create your own custom model metadata provider like this:

public class CustomModelMetadataProvider : DataAnnotationsModelMetadataProvider
{
    protected override ModelMetadata CreateMetadata(IEnumerable<System.Attribute> attributes, System.Type containerType, System.Func<object> modelAccessor, System.Type modelType, string propertyName)
    {
        var modelMetadata = base.CreateMetadata(attributes, containerType, modelAccessor, modelType, propertyName);
        if (string.IsNullOrEmpty(propertyName)) return modelMetadata;

        if (modelType == typeof(String))
                modelMetadata.ConvertEmptyStringToNull = false;

        return modelMetadata;           
    }
}

Then register it in your app_start:

ModelMetadataProviders.Current = new CustomModelMetadataProvider();

这篇关于默认设置为DisplayFormatAttribute.ConvertEmptyStringToNull跨网站虚假的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆