Exemplo n.º 1
0
 /// <inheritdoc />
 public override void PrepareFieldConfiguration(IFieldConfiguration fieldConfiguration)
 {
     if (!string.IsNullOrEmpty(FieldGenerator.Metadata.DisplayFormatString))
     {
         fieldConfiguration.Attr("data-val-format", FieldGenerator.Metadata.DisplayFormatString.Replace("{0:", "").Replace("}", ""));
     }
 }
 /// <summary>
 /// Applys the autofocus attribute to a given field
 /// </summary>
 /// <param name="config">Field configuration to modify</param>
 /// <returns>The instance of IFieldConfiguration passed in to continue chaining things</returns>
 public static IFieldConfiguration AutoFocus(this IFieldConfiguration config)
 {
     if (config != null)
     {
         return(config.Attr("autofocus", "autofocus"));
     }
     return(null);
 }
 /// <summary>
 /// Sets the tab index of a given field
 /// </summary>
 /// <param name="config">Field configuration to update</param>
 /// <param name="index">Tab index to be set</param>
 /// <returns>The instance of IFieldConfiguration passed in to continue chaining things</returns>
 public static IFieldConfiguration TabIndex(this IFieldConfiguration config, int index)
 {
     if (config != null)
     {
         return(config.Attr("tabindex", index));
     }
     return(null);
 }
 public override void PrepareFieldConfiguration(IFieldConfiguration fieldConfiguration)
 {
     // There is a bug in the unobtrusive validation for numeric fields that are a radio button
     //  when there is a radio button for "no value selected" i.e. value="" then it can't be selected
     //  as an option since it tries to validate the empty string as a number.
     // This turns off unobtrusive validation in that circumstance
     if (fieldConfiguration.DisplayType == FieldDisplayType.List && !FieldGenerator.Metadata.IsRequired && IsNumeric() && !HasMultipleValues())
     {
         fieldConfiguration.Attr("data-val", "false");
     }
 }
Exemplo n.º 5
0
        /// <inheritdoc />
        public override void PrepareFieldConfiguration(IFieldConfiguration fieldConfiguration)
        {
            var dateTimeFormat = "MM-dd-yyyy";

            if (!string.IsNullOrEmpty(FieldGenerator.Metadata.DisplayFormatString))
            {
                dateTimeFormat = FieldGenerator.Metadata.DisplayFormatString.Replace("{0:", "").Replace("}", "");
            }

            fieldConfiguration.Attr("data-val-format", dateTimeFormat);
            fieldConfiguration.AddClass("datepicker");
        }
Exemplo n.º 6
0
        /// <inheritdoc />
        public override void PrepareFieldConfiguration(IFieldConfiguration fieldConfiguration)
        {
            if (!string.IsNullOrEmpty(FieldGenerator.Metadata.DisplayFormatString))
            {
                var format = FieldGenerator.Metadata.DisplayFormatString.Replace("{0:", "").Replace("}", "");
                if (format == "g")
                {
                    format = string.Join(" ", CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern, CultureInfo.CurrentCulture.DateTimeFormat.ShortTimePattern);
                }

                fieldConfiguration.Attr("data-val-format", format);
            }
        }
        /// <inheritdoc />
        public IReadonlyFieldConfiguration PrepareFieldConfiguration(IFieldConfiguration fieldConfiguration, FieldParent fieldParent)
        {
            fieldConfiguration = fieldConfiguration ?? new FieldConfiguration();
            if (!string.IsNullOrEmpty(Metadata.EditFormatString) && string.IsNullOrEmpty(fieldConfiguration.FormatString))
            {
                fieldConfiguration.WithFormatString(Metadata.EditFormatString);
            }
            if (!string.IsNullOrEmpty(Metadata.NullDisplayText) && string.IsNullOrEmpty(fieldConfiguration.NoneString))
            {
                fieldConfiguration.WithNoneAs(Metadata.NullDisplayText);
            }
            if (Metadata.IsReadOnly)
            {
                fieldConfiguration.Readonly();
            }
            if (fieldConfiguration.Hint != null)
            {
                var hintId = $"{HtmlHelper.GetFullHtmlFieldName(FieldProperty)}--Hint";
                fieldConfiguration.Attr("aria-describedby", hintId).WithHintId(hintId);
            }

            var handler = FieldGeneratorHandlersRouter <TModel, T> .GetHandler(this);

            handler.PrepareFieldConfiguration(fieldConfiguration);
            Template.PrepareFieldConfiguration(this, handler, fieldConfiguration, fieldParent);

            // Do this after the handler above since it may change FieldDisplayType
            var disabledOrReadonly           = fieldConfiguration.Attributes.Has("readonly") || fieldConfiguration.Attributes.Has("disabled");
            var isCheckboxList               = fieldConfiguration.DisplayType == FieldDisplayType.List && this.HasMultipleValues();
            var userAlreadySpecifiedRequired = fieldConfiguration.Attributes.Has("required");

            if (Metadata.IsRequired && !disabledOrReadonly && !userAlreadySpecifiedRequired && !isCheckboxList)
            {
                fieldConfiguration.Required();
            }

            return(fieldConfiguration);
        }
Exemplo n.º 8
0
        /// <inheritdoc />
        public override void PrepareFieldConfiguration(IFieldConfiguration fieldConfiguration)
        {
            if (!fieldConfiguration.Attributes.Has("step"))
            {
                if (FieldGenerator.IsIntegralNumber())
                {
                    fieldConfiguration.Attr("step", 1);
                }
                else if (FieldGenerator.Metadata.DataTypeName == DataType.Currency.ToString())
                {
                    fieldConfiguration.Attr("step", 0.01);
                }
                else
                {
                    fieldConfiguration.Attr("step", "any");
                }
            }

            if (!fieldConfiguration.Attributes.Has("min") || !fieldConfiguration.Attributes.Has("max"))
            {
                object min = null;
                object max = null;

                if (FieldGenerator.GetCustomAttributes().OfType <RangeAttribute>().Any())
                {
                    var converter = TypeDescriptor.GetConverter(FieldGenerator.GetUnderlyingType());
                    var range     = FieldGenerator.GetCustomAttributes().OfType <RangeAttribute>().First();
                    min = range.Minimum;
                    max = range.Maximum;
                }
                else
                {
                    var type = FieldGenerator.GetUnderlyingType();

                    // https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/integral-numeric-types
                    if (type == typeof(byte))
                    {
                        min = 0;
                        max = 255;
                    }
                    if (type == typeof(sbyte))
                    {
                        min = -128;
                        max = 127;
                    }
                    if (type == typeof(short))
                    {
                        min = -32768;
                        max = 32767;
                    }
                    if (type == typeof(ushort))
                    {
                        min = 0;
                        max = 65535;
                    }
                    if (type == typeof(uint))
                    {
                        min = 0;
                    }
                    if (type == typeof(ulong))
                    {
                        min = 0;
                    }
                }

                if (!fieldConfiguration.Attributes.Has("min") && min != null)
                {
                    fieldConfiguration.Min(min.ToString());
                }
                if (!fieldConfiguration.Attributes.Has("max") && max != null)
                {
                    fieldConfiguration.Max(max.ToString());
                }
            }
        }