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

最新文章

  1. linux Mint截图软件 Shutter
  2. [转]centos6.6 rpm安装与管理
  3. input只读属性区别
  4. Adobe Illustrator里使用fontawesome矢量图标
  5. SQL Server安装完成后3个需要立即修改的配置选项(转载)
  6. 使用Thread类可以创建和控制线程
  7. Mac OS X 系统目录结构
  8. Java开发者工具
  9. 【C语言探索之旅】 第三部分第二课:SDL开发游戏之创建窗口和画布
  10. 浅析Java中的final关键字(转)
  11. python修炼6
  12. 深入浅出数据结构C语言版(17)——希尔排序
  13. SSH框架项目开发命名规范
  14. JAVA中Sql时间格式与util时间格式转换
  15. python连接mysql数据库读取数据
  16. java锁——wait,notify,synchronized
  17. Database学习 - mysql 数据库 索引
  18. 使用jQuery实现一个类似GridView的编辑,更新,取消和删除的功能
  19. kafka监控工具之一--kafka-manager
  20. pygame精灵类实现房子爆炸效果

热门文章

  1. 主引导记录MBR的结构和作用
  2. arm linux利用alsa驱动并使用usb音频设备
  3. url rewrite导致的500.19 0x8007000d
  4. 新增html5标签 例如input的很多属性
  5. poj 2762 Going from u to v or from v to u? trajan+拓扑
  6. Goroutines和Channels(四)
  7. PHP 高精度比较bccomp
  8. Hashtable、HashMap、TreeMap心得
  9. jq的attr()与prop()之间区别
  10. notification后,程序应该如何响应