- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我刚刚将一堆 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());
关于c# - 将 DisplayFormatAttribute.ConvertEmptyStringToNull 的默认值设置为 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20308201/
我希望能够在我的 View 模型中标记属性,以便在我的 MVC View 中显示时使用自定义格式进行格式化。 我假设我需要自己的显示格式属性并设置显示格式,但我不确定如何设置此显示格式或在哪里设置。如
我正在使用 Entity Framework v6.1.3(代码优先)和 ASP.NET MVC v5.2.3 我知道我可以像这样在十进制数据类型中使用DisplayFormatAttribute [
我通过以下代码在资源的 DisplayFormat 中设置 NullDisplayText public class LocalizedDisplayFormatAttribute : Display
我正在寻找一种自动格式化实体中数据字段的有效方法 - 最好使用属性。 我们需要从数据模型生成一个 PDF 文件。我们希望确保可交付成果的一致性,因此我们希望将一些格式规则应用于某些数据字段(日期、电话
所以我找到了 DisplayFormatAttribute 类(我猜它只用于 Web 开发?)。它确实会在可维护性方面改进我的项目,因为我有许多小数属性,它们的小数位数似乎一次又一次地改变(客户要求与
我刚刚将一堆 Web 服务转换为 Web API2。现在,当浏览器发送一个空字符串并将我的代码转换为 null 时,我的 C# 代码崩溃了。我研究了全局解决方案,但没有找到适合我的解决方案。 我当然可
属性 DisplayFormatAttribute.ConvertEmptyStringToNull 的默认值为 true。我想将整个站点的默认值设置为 false(或者按类或页面也可以)。有没有办法
我在其他地方读到 DisplayFormat 只是以与 string.Format 相同的方式使用 DataFormatString 。我正在尝试显示一个很长的电话号码;在控制台应用程序中,可以执行以
我是一名优秀的程序员,十分优秀!