ajax post提交空字符串(string.Empty) MVC接收为null的问题html
这个问题查了好多资料才知道缘由:ajax
if (bindingContext.ModelMetadata.ConvertEmptyStringToNull && Object.Equals(value, String.Empty)) { return null; }
当Model的元数据ConvertEmptyStringToNull为true,而且form的值为空字串时,返回null.json
解决方法:mvc
一、给对应的属性加上特性ide
[DisplayFormat(ConvertEmptyStringToNull = false)]
二、覆写模型建立元数据的方法,post
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文件中进行设置spa
ModelMetadataProviders.Current = new EmptyStringDataAnnotationsModelMetadataProvider();
参考文章:code
一、https://stackoverflow.com/questions/12734083/string-empty-converted-to-null-when-passing-json-object-to-mvc-controllerorm
二、https://www.cnblogs.com/lonelyxmas/p/5558885.htmlhtm