我有以下从键值 XML 文件中读取的方法。我传入一个键并返回一个值,该值用于显示在我的 View 中。
public static class TextManager
{
public static string GetValue(string key)
{
string returnVal = null;
XmlSerializer serializer = new XmlSerializer(typeof(Entries));
string path = HttpContext.Current.Server.MapPath("/App_Data/text-key-value.xml");
if (File.Exists(path))
{
Entries entries = (Entries)serializer.Deserialize(File.OpenRead(path));
var entry = entries.Where(u => u.Key == key).FirstOrDefault();
if (entry != null)
{
returnVal = entry.Value;
}
}
return returnVal;
}
}
基本上,我希望能够在我的模型类中使用此方法作为数据注释,它将直接从我的站点文本文件中提取并设置为显示名称属性。
比如我要替换
[Display(Name = "Reference Code")]
public string ReferenceCode { get; set; }
有了这个
[DisplaySiteText("ReferenceCodeKey")]
public string ReferenceCode { get; set; }
DisplaySiteText 会将字符串引用“ReferenceCodeKey”传递给 GetValue 方法,将引用归档到文件中,然后将标准显示名称属性设置为文件中的任何内容。
我如何创建自己的自定义模型注释来执行此操作,我过去通过创建一个继承自 ValidationAttribute 的类来编写自定义验证注释,但我认为这在这种情况下不起作用。
最佳答案
为此,您可以继承 DisplayNameAttribute
public class DisplaySiteTextAttribute : DisplayNameAttribute
{
private string _key;
public DisplaySiteTextAttribute(string key)
{
_key = key;
}
public override string DisplayName
{
get
{
return TextManager.GetValue(_key);
}
}
}
关于c# - 使用自定义功能覆盖 MVC 模型显示名称注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57416242/