0

我有一个属性 CountryText ,其中包含要为属性国家显示的文本,所以我需要做这样的事情:

[Display(Name=CountryText)]
        public string Country { get; set; }
        public string CountryText { get; set; }

请问我该怎么做??

4

1 回答 1

0

更新: 这是不可能的。

您需要一个自定义属性来装饰您的属性,以及一个自定义模型元数据提供程序(通常从 DataAnnotationsModelMetadataProvider 继承,这是 MVC 应用程序中的默认设置)。自定义提供程序将需要设置自定义属性中定义的元数据。

问题是您无法从模型元数据提供程序访问模型。您可以访问有关类型(模型类型、容器类型、属性...)的信息,但不能访问模型的具体实例,因此您无法获取属性值并在提供程序中使用它。

选择

但是,您可以使用 aHtml.Label来显示字段标题。

如果你想让它更“自动化”,你总是可以编写一个自定义的 html 助手来为你创建标签。这个助手可以完全访问模型类型和模型内容,因此您仍然可以使用自定义属性,在 html 助手代码中查找它,并使用其他属性的内容。

如果元数据提供者有可能

您的自定义元数据提供者应该为视图模型属性添加所有必要的元数据。此元数据提供程序可以基于约定或使用自定义属性来添加附加信息。

这些博客条目完美地解释了如何实现自定义属性和元数据提供程序。

于 2013-07-23T11:06:48.840 回答