gpt4 book ai didi

c# - 将 DisplayFormatAttribute.ConvertEmptyStringToNull 的默认值设置为 false

转载 作者:可可西里 更新时间:2023-11-01 08:12:21 28 4
gpt4 key购买 nike

我刚刚将一堆 Web 服务转换为 Web API2。现在,当浏览器发送一个空字符串并将我的代码转换为 null 时,我的 C# 代码崩溃了。我研究了全局解决方案,但没有找到适合我的解决方案。

我当然可以为所有 Web API 模型中的每个字符串手动设置它,但我有很多模型,因此更喜欢全局解决方案。

来过这里:string.empty converted to null when passing JSON object to MVC Controller和其他页面,并尝试实现每个解决方案,但无济于事。

如何将 ConvertEmptyStringToNull 的默认值全局设置为 false?

最佳答案

您需要将 ModelMetadataProvider 替换为将 ConvertEmptyStringToNull 设置为 false

如:

public class EmptyStringAllowedModelMetadataProvider : DataAnnotationsModelMetadataProvider
{
protected override CachedDataAnnotationsModelMetadata CreateMetadataFromPrototype(CachedDataAnnotationsModelMetadata prototype, Func<object> modelAccessor)
{
var metadata = base.CreateMetadataFromPrototype(prototype, modelAccessor);
metadata.ConvertEmptyStringToNull = false;
return metadata;
}

protected override CachedDataAnnotationsModelMetadata CreateMetadataPrototype(IEnumerable<Attribute> attributes, Type containerType, Type modelType, string propertyName)
{
var metadata = base.CreateMetadataPrototype(attributes, containerType, modelType, propertyName);
metadata.ConvertEmptyStringToNull = false;
return metadata;
}
}

您可以像这样在您的 WebApiConfig 中注册:

config.Services.Replace(typeof(ModelMetadataProvider), new EmptyStringAllowedModelMetadataProvider());

这是受 https://gist.github.com/nakamura-to/4029706 的启发

关于c# - 将 DisplayFormatAttribute.ConvertEmptyStringToNull 的默认值设置为 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20308201/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com