I encountered a bit of a problem earlier today when making use of the `System.ComponentModel.DataAnnotations` namespace to mark properties in my models with a nicer more human-readable "Name" property:
using System.ComponentModel.DataAnnotations; 

namespace Foo 
{
	public class Person
	{
		[Display(Name = "First Name")]
		public string FirstName { get; set; }
	}
}
This is all fine and dandy, but there is no way to access other data annotations available in the DataAnnotations class through the use of the Mvc Html helpers system. So I decided to write an extension method, strongly based on the original source code for `@Html.DisplayName` (here) so that you can access the `ShortName` annotation value in your Views. I haven't written a `ShortNameFor<>` extension method just yet, but it's really just a matter of changing the code found on the GitHub page above to point to the `ShortName` annotation instead. So here is the extension method :)
public static class HtmlPropertyNameExtensions
{
    #region The short name (set via data annotations)
    public static IHtmlString ShortName(this HtmlHelper html, string expression)
    {
        return ShortNameInternal(html, expression, metadataProvider: null);
    }
    internal static MvcHtmlString ShortNameInternal(this HtmlHelper html, string expression, ModelMetadataProvider metadataProvider)
    {
        return ShortNameHelper(ModelMetadata.FromStringExpression(expression, html.ViewData), expression);
    }
    internal static MvcHtmlString ShortNameHelper(ModelMetadata metadata, string htmlFieldName)
    {
        string resolvedShortName = metadata.ShortDisplayName ?? metadata.PropertyName ?? htmlFieldName.Split('.').Last();
        return new MvcHtmlString(HttpUtility.HtmlEncode(resolvedShortName));
    }
    #endregion
}
I guess you could take this a step further and feed in the name of the data annotation on the fly and it would resolve the annotation like that!