Вам нужен новый метаданный провайдер, который может наследовать от используемого по умолчанию, например:
using System;
using System.Web.Mvc;
using System.Collections.Generic;
public class MyMetadataProvider : DataAnnotationsModelMetadataProvider
{
protected override ModelMetadata CreateMetadata(IEnumerable<Attribute> attributes, Type containerType, Func<object> modelAccessor, Type modelType, string propertyName)
{
var metadata = base.CreateMetadata(attributes, containerType, modelAccessor, modelType, propertyName);
if (metadata.DisplayName == null)
metadata.DisplayName = GetDisplayNameFromDBName(propertyName);
return metadata;
}
private string GetDisplayNameFromDBName(string propertyName)
{
return ...;
}
}
Зарегистрируйте его в global.asax следующим образом:
ModelMetadataProviders.Current = new MyMetadataProvider();
Вам просто нужно предоставитьреализация GetDisplayNameFromDBName для предоставления правильного отображаемого имени с именем свойства