zoukankan      html  css  js  c++  java
  • ajax post提交空字符串(string.Empty) MVC接收为null的问题

    ajax post提交空字符串(string.Empty) MVC接收为null的问题

    这个问题查了好多资料才知道原因:

    if (bindingContext.ModelMetadata.ConvertEmptyStringToNull && Object.Equals(value, String.Empty)) {   return null; }

    当Model的元数据ConvertEmptyStringToNull为true,并且form的值为空字串时,返回null.

    解决方法:

      1、给对应的属性加上特性

    [DisplayFormat(ConvertEmptyStringToNull = false)]

      2、覆写模型创建元数据的方法,

      

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

      并在Global.asax文件中进行设置

      

    ModelMetadataProviders.Current = new EmptyStringDataAnnotationsModelMetadataProvider();

    参考文章:

      1、https://stackoverflow.com/questions/12734083/string-empty-converted-to-null-when-passing-json-object-to-mvc-controller

      2、https://www.cnblogs.com/lonelyxmas/p/5558885.html

  • 相关阅读:
    邪恶的强制数据转换
    知识普及
    判断是否为一个数字
    parseInt
    webpack学习记录
    数组隐藏属性
    elasticSearch基本使用
    elasticsearch安装和部署
    neo4j索引
    spark yarn 提交作业
  • 原文地址:https://www.cnblogs.com/dansediao/p/8253114.html
Copyright © 2011-2022 走看看