gpt4 book ai didi

c# - 自定义 DataAnnotation 属性

转载 作者:行者123 更新时间:2023-11-30 20:10:31 24 4
gpt4 key购买 nike

当我在 ASP.NET MVC 3 模型中使用 DisplayAttribute 时,编写它们很快就变得很痛苦,因为我们必须对字符串进行硬编码或从某个包含 const strings 的静态类中引用字符串(这就是我现在所拥有的,见下文)。但即使这样对我来说也太多了。

我想提出一个类似于 [SimpleDisplay] 的属性,它会通过查看

隐式构造资源字符串
  1. 类名,
  2. 属性附加到的属性名称。

这可能吗?

像这样

public class Product {

[SimpleDisplay] // it will take Product and Name and do something like this Product_Name
public string Name { get; set; }

}

如果可能的话,这是我想摆脱的:

    [Display(ResourceType = typeof(Resources.Localize), Name = ResourceStrings.product_prettyid)]
public virtual int PrettyId
{
get;
set;
}

[Display(ResourceType = typeof(Resources.Localize), Name = ResourceStrings.product_name)]
public virtual string Title
{
get;
set;
}

现在我知道不可能继承 DisplayAttribute,因为它是密封的。我还有什么其他选择?它甚至有意义吗?

最佳答案

我会尝试只创建一个标准属性和自定义 DataAnnotationsModelMetadataProvider 。您可以覆盖 CreateMetadata 方法,该方法获取 IEnumerable<Attribute> .你应该搜索你的属性

attributes.OfType<SimpleDisplayAttribute>().FirstOrDefault();

并以您想要的任何方式填充模型元数据。

关于c# - 自定义 DataAnnotation 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4956362/

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