从驼峰案例字段名称

时间:2015-05-21 08:32:17

标签: c# asp.net-mvc data-annotations

我正在开发一个包含大量数据表的项目,并通过ASP.net MVC屏幕显示它们。

我发现自己编写了很多简单的数据注释:

 [Display(Name = "Manager Name")]
 public string ManagerName { get; set; }

 [Display(Name = "Employee Name")]
 public string EmployeeName { get; set; }

 [Display(Name = "Employee No")]
 public string EmployeeNo { get; set; }

 [Display(Name = "Manager Employee No")]
 public string ManagerEmployeeNo { get; set; }

这变得非常乏味,并且想知道是否有一种方法可以添加一个新的属性,即" convertFromCamel" (或某事)或有没有办法覆盖

 @Html.DisplayNameFor(m => Model.First().EmployeeNo)

因此,如果没有数据注释,它将转换现有的字段名称来自驼峰案例。

提前致谢

1 个答案:

答案 0 :(得分:10)

结合使用博客here上的信息和优秀的骆驼案例拆分正则表达式here,我能够解决这个问题。这个概念是您创建默认Series S = chart1.Series[0]; S.ChartType = SeriesChartType.Line; S.Color = Color.Fuchsia; S.Points.AddXY(1, 10); S.Points.AddXY(2, 20); S.Points.AddXY(3, 60); S.Points.AddXY(4, 10); DataPoint yourDataPoint = S.Points[2]; yourDataPoint.Color = Color.Gray; 的自定义风格。如果属性已经没有显示名称,则此自定义提供程序会启动并为您创建一个(带空格)。

首先,创建一个类:

DataAnnotationsModelMetadataProvider

现在通过执行以下操作覆盖using System; using System.ComponentModel; using System.Text.RegularExpressions; using System.Web.Mvc; namespace MyProject.Whatever { public class CustomDataAnnotationsModelMetadataProvider : DataAnnotationsModelMetadataProvider { protected override ModelMetadata GetMetadataForProperty(Func<object> modelAccessor, Type containerType, PropertyDescriptor propertyDescriptor) { ModelMetadata metadata = base.GetMetadataForProperty(modelAccessor, containerType, propertyDescriptor); if (metadata.DisplayName == null) { metadata.DisplayName = SplitCamelCase(metadata.GetDisplayName()); } return metadata; } private string SplitCamelCase(string str) { return Regex.Replace( Regex.Replace( str, @"(\P{Ll})(\P{Ll}\p{Ll})", "$1 $2" ), @"(\p{Ll})(\P{Ll})", "$1 $2" ); } } } 文件中的默认DataAnnotationsModelMetadataProvider

Global.asax.cs