public static IMvcBuilder AddAppendAsterixToRequiredFieldLabels(this IMvcBuilder builder, Action <ConventionsHtmlGeneratorOptions> setupAction)
        {
            var services = builder.Services;

            //Appends '*' to required fields
            builder.AddAppendAsterixToRequiredFieldLabels();
            services.Configure(setupAction);

            return(builder);
        }
        /// <summary>
        /// Adds MVC display conventions services to the application.
        /// </summary>
        public static IMvcBuilder AddMvcDisplayConventions(this IMvcBuilder builder, params IDisplayConventionFilter[] displayConventions)
        {
            var services = builder.Services;

            services.Configure <MvcOptions>(options =>
            {
                options.ModelMetadataDetailsProviders.Add(new DisplayConventionsMetadataProvider(displayConventions));
            });

            if (displayConventions.OfType <AppendAsterixToRequiredFieldLabels>().Any())
            {
                var addAsterix = displayConventions.OfType <AppendAsterixToRequiredFieldLabels>().FirstOrDefault().LimitConvention;
                if (addAsterix != null)
                {
                    builder.AddAppendAsterixToRequiredFieldLabels(options => options.AddAstertix = addAsterix);
                }
                else
                {
                    builder.AddAppendAsterixToRequiredFieldLabels();
                }
            }

            return(builder);
        }