c# - .NET 中用户友好的属性名称,如 Rails 中的属性名称

标签 c# .net asp.net-mvc

在 Ruby on Rails 中,配置中有一个 YAML 文件,可让您定义模型属性名称的纯英文版本。实际上,它可以让您定义纯任何语言版本:它是国际化内容的一部分,但大多数人将它用于向用户显示模型验证结果之类的事情。

我的 .NET MVC 4 项目需要这种功能。用户提交表单并收到一封电子邮件,其中包含他们发布的几乎所有内容(表单绑定(bind)到模型)。我写了一个辅助方法来通过反射转出属性/值对的 HTML 表,例如

foreach (PropertyInfo info in obj.GetType()
    .GetProperties(BindingFlags.Public | 
                   BindingFlags.Instance | 
                   BindingFlags.IgnoreCase)) 
{
  if (info.CanRead && !PropertyNamesToExclude.Contains(info.Name)) 
  {
    string value = info.GetValue(obj, null) != null ? 
                                            info.GetValue(obj, null).ToString() :
                                            null;
    html += "<tr><th>" + info.Name + "</th><td>" + value + "</td></tr>";
  }
}

当然,这会打印出 info.Name 之类的“OrdererGid”,而“Orderer Username”可能会更好。 .NET 中有这样的东西吗?

最佳答案

有一个名为 DisplayName 的数据属性允许您执行此操作。只需用这个注释您的模型属性和每个属性的友好名称

[DisplayName("Full name")]
public string FullName { get; set; }

关于c# - .NET 中用户友好的属性名称,如 Rails 中的属性名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14268390/

相关文章:

c# - EF4.1 + MARS - 更新时不允许新事务

c# - 将 Razor 选择绑定(bind)到来自 VewData 的字典

c# - 应用程序如何跨用户帐户进行通信?

c# - Task.Factory.ContinueWhenAny 在任何任务无一异常(exception)地完成时继续

c# - 为什么我们不能在 if 语句中定义变量?

javascript - 通过IE6自动打印

c# - 我们如何使用 MVC 和 EntityFramework 中的下拉列表显示数据库的表名?

c# - 我只在 Windows 7 上得到 NullReference 异常的任何原因?

.net - now.date.addDays 的反义词是什么?

c# - 在 C# 中创建列表列表