我正在开发一个包含大量数据表的项目,并通过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)
因此,如果没有数据注释,它将转换现有的字段名称来自驼峰案例。
提前致谢
答案 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