我有一个属性CountryText,其中包含要为属性国家/地区显示的文本,所以我需要像这样做:
[Display(Name=CountryText)]
public string Country { get; set; }
public string CountryText { get; set; }
我该怎么办呢?
答案 0 :(得分:0)
<强>更新强> 这是不可能的。
您需要一个自定义属性来装饰您的属性,以及一个自定义模型metada提供程序(通常继承自DataAnnotationsModelMetadataProvider,这是MVC应用程序中的默认设置)。自定义提供程序将需要设置自定义属性中定义的元数据。
问题是您无法从模型metada提供程序访问该模型。您可以访问有关类型(模型类型,容器类型,属性...)的信息,但不能访问模型的具体实例,因此您无法获取属性值并在提供程序中使用它。
替代
但是,您可以使用Html.Label
来显示字段标题。
如果你想让它更“自动”,你可以写一个自定义的html帮助器,为你创建标签。此帮助程序可以完全访问模型类型和模型内容,因此您仍然可以使用自定义属性,在html帮助程序代码中查找它,并使用其他属性的内容。
如果可以使用元数据提供商
您的自定义元数据提供程序应为视图模型属性添加所有必需的metadata。此元数据提供程序可以是基于约定的,也可以使用自定义属性来添加其他信息。
这些博客条目说明了如何实现自定义属性和元数据提供程序。