Asp MVC's LabelFor helper takes an Expression<Func<TModel, Value>>. This expression can be used to retrieve the property info that the Func<TModel,Value> points to, which in turn can have it's name retrieved through PropertyInfo.Name.
Asp MVC then assigns the name attribute on a HTML tag to equal this name. So if you select a property with LabelFor called Id, you end up with <label name='Id'/>.
In order to get the PropertyInfo from the Expression<Func<TModel,Value>>, you could look at this answer, which uses the following code:
public PropertyInfo GetPropertyInfo<TSource, TProperty>(
    TSource source,
    Expression<Func<TSource, TProperty>> propertyLambda)
{
    Type type = typeof(TSource);
    MemberExpression member = propertyLambda.Body as MemberExpression;
    if (member == null)
        throw new ArgumentException(string.Format(
            "Expression '{0}' refers to a method, not a property.",
            propertyLambda.ToString()));
    PropertyInfo propInfo = member.Member as PropertyInfo;
    if (propInfo == null)
        throw new ArgumentException(string.Format(
            "Expression '{0}' refers to a field, not a property.",
            propertyLambda.ToString()));
    if (type != propInfo.ReflectedType &&
        !type.IsSubclassOf(propInfo.ReflectedType))
        throw new ArgumentException(string.Format(
            "Expresion '{0}' refers to a property that is not from type {1}.",
            propertyLambda.ToString(),
            type));
    return propInfo;
}