开发者

Can I add a display name attribute on the fly if one isnt specified in MVC3?

开发者 https://www.devze.com 2023-03-29 03:21 出处:网络
I was thinking it would be super cool if I could hook up something that would add a display name attribute on the fly to any model property that didnt already have one. The idea开发者_如何学Python wou

I was thinking it would be super cool if I could hook up something that would add a display name attribute on the fly to any model property that didnt already have one. The idea开发者_如何学Python would be that if I have a property called FirstName I could just tiltlize it and make it "First Name"

MVC seems to have a provider model for everything. Is there anything I could use to do this?


This is just the expanded version of Doug's answer

public class MyModelMetadataProvider : DataAnnotationsModelMetadataProvider
{
    public override ModelMetadata GetMetadataForProperty(Func<object> modelAccessor, Type containerType, string propertyName)
    {
        var result = base.GetMetadataForProperty(modelAccessor, containerType, propertyName);
        if (result.DisplayName.IsEmpty()) result.DisplayName = propertyName.InflectTo().Titleized;
        return result;
    }
}

and register it with mvc in the global asax like so:

ModelMetadataProviders.Current = new MyModelMetadataProvider();


Yes, you can do that. You just need to create your own ModelMetaDataprovider and override the DisplayName.


You can Use [DisplayName] attribute to achieve the goal For property, if You want to use for Model Basis, Then GoFor MOdelMetaDataProvider

ModelMetaDataProvider MSDN Docs

Sample Tutorial for ModelMetaDataProvider

Another Sample For ModelMetaDataProvider

0

精彩评论

暂无评论...
验证码 换一张
取 消