Ejemplo n.º 1
0
        //lista os valores do enumerador nullable para disponibilizar na dropdownlist:
        private static IEnumerable <SelectListItem> SetEnumNullableItems <TModel, TEnum>(this HtmlHelper <TModel> htmlHelper, Expression <Func <TModel, TEnum> > expression, List <Enum> listToExclude)
        {
            //obter os valores:
            var metadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
            var values   = Enum.GetValues(GetNonNullableModelType(metadata)).Cast <TEnum>();

            var dicObjs  = new Dictionary <object, string>();
            var selected = "";

            //para cada valor do enumerador que não pertença à lista de exclusão, adiciona à lista a apresentar e verifica se é o valor selecionado ou não:
            foreach (var value in values.Where(value => listToExclude == null || (listToExclude != null && !listToExclude.Exists(i => i.Equals(value as Enum)))))
            {
                dicObjs.Add(value, (value as Enum).GetDescription());

                if (metadata.Model != null && value.ToString() == metadata.Model.ToString())
                {
                    selected = metadata.Model.ToString();
                }
            }

            //forma a selectList com os dados obtidos em cima:
            IEnumerable <SelectListItem> itens = new SelectList(dicObjs, "Key", "Value", selected);

            if (metadata.IsNullableValueType)
            {
                itens = SingleEmptyItem.Concat(itens);
            }

            return(itens);
        }
Ejemplo n.º 2
0
        public static MvcHtmlString MyEnumDropDownListFor <TModel, TEnum>(this HtmlHelper <TModel> htmlHelper, Expression <Func <TModel, TEnum> > expression, IEnumerable <SelectListItem> modelActionsList)
        {
            ModelMetadata       metadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
            Type                enumType = GetNonNullableModelType(metadata);
            IEnumerable <TEnum> values   = Enum.GetValues(enumType).Cast <TEnum>();

            TypeConverter converter = TypeDescriptor.GetConverter(enumType);

            IEnumerable <SelectListItem> items =
                from value in values
                select new SelectListItem
            {
                Text     = converter.ConvertToString(value),
                Value    = converter.ConvertToString(value),
                Selected = value.Equals(metadata.Model)
            };

            if (metadata.IsNullableValueType)
            {
                items = SingleEmptyItem.Concat(items);
            }

            return(htmlHelper.DropDownListFor(
                       expression,
                       items
                       ));
        }
Ejemplo n.º 3
0
        public static MvcHtmlString EnumDropDownListSpecialFor <TModel, TEnum>(this HtmlHelper <TModel> htmlHelper, Expression <Func <TModel, TEnum> > expression, bool soloLectura = false)
        {
            ModelMetadata       metadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
            Type                enumType = GetNonNullableModelType(metadata);
            IEnumerable <TEnum> values   = Enum.GetValues(enumType).Cast <TEnum>();

            IEnumerable <SelectListItem> items = from value in values
                                                 select new SelectListItem
            {
                Text     = GetEnumDescription(value),
                Value    = value.ToString(),
                Selected = value.Equals(metadata.Model)
            };

            if (metadata.IsNullableValueType)
            {
                items = SingleEmptyItem.Concat(items).OrderBy(a => a.Value);
            }



            if (soloLectura)
            {
                var htmlAttributes = new { @class = "form-control", @disabled = "disabled" };
                return(htmlHelper.DropDownListFor(expression, items, htmlAttributes));
            }
            else
            {
                var htmlAttributes = new { @class = "form-control" };
                return(htmlHelper.DropDownListFor(expression, items, htmlAttributes));
            }
        }
        /// <summary>
        /// Renders a drop down list
        /// </summary>
        /// <param name="htmlHelper"></param>
        /// <param name="name">Name of the select element</param>
        /// <param name="options">Options</param>
        /// <param name="htmlAttributes">HTML attributes for the select</param>
        public static MvcHtmlString DropDownList(this HtmlHelper htmlHelper, string name, IEnumerable <string> options, object htmlAttributes = null)
        {
            var items = options.Select(o => new SelectListItem {
                Value = o, Text = o, Selected = o == null
            });

            items = SingleEmptyItem.Concat(items);
            return(htmlHelper.DropDownList(name, items, htmlAttributes));
        }
Ejemplo n.º 5
0
        public static MvcHtmlString EnumDropDownListForWithDescription <TModel, TEnum>(this HtmlHelper <TModel> htmlHelper, Expression <Func <TModel, TEnum> > expression, object htmlAttributes)
        {
            var metadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
            var enumType = GetNonNullableModelType(metadata);
            var values   = Enum.GetValues(enumType).Cast <TEnum>();

            var items = from value in values
                        select new SelectListItem
            {
                Text     = EnumExtensions.GetEnumDescription(value),
                Value    = value.ToString(),
                Selected = value.Equals(metadata.Model)
            };

            if (metadata.IsNullableValueType)
            {
                items = SingleEmptyItem.Concat(items);
            }

            return(htmlHelper.DropDownListFor(expression, items, htmlAttributes));
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Creates a drop down list which is bound to an enum from the model.
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <typeparam name="TEnum"></typeparam>
        /// <param name="htmlHelper"></param>
        /// <param name="expression">The enum to be bound to the drop down list.</param>
        /// <param name="htmlAttributes">Any HTML attributes to add on to the drop down list.</param>
        /// <returns></returns>
        public static MvcHtmlString EnumDropDownListFor <TModel, TEnum>(this HtmlHelper <TModel> htmlHelper, Expression <Func <TModel, TEnum> > expression, object htmlAttributes)
        {
            ModelMetadata       metadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
            Type                enumType = GetNonNullableModelType(metadata);
            IEnumerable <TEnum> values   = Enum.GetValues(enumType).Cast <TEnum>();

            IEnumerable <SelectListItem> items = from value in values
                                                 select new SelectListItem
            {
                Text     = GetEnumName(value),
                Value    = value.ToString(),
                Selected = value.Equals(metadata.Model)
            };

            // If the enum is nullable, add an 'empty' item to the collection
            if (metadata.IsNullableValueType)
            {
                items = SingleEmptyItem.Concat(items);
            }

            return(htmlHelper.DropDownListFor(expression, items, htmlAttributes));
        }
Ejemplo n.º 7
0
        public static MvcHtmlString EnumDropDownListFor <TModel, TEnum>(this HtmlHelper <TModel> htmlHelper, Expression <Func <TModel, TEnum> > expression)
        {
            ModelMetadata       metadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
            Type                enumType = GetNonNullableModelType(metadata);
            IEnumerable <TEnum> values   = Enum.GetValues(enumType).Cast <TEnum>();

            IEnumerable <SelectListItem> items =
                values.Select(value => new SelectListItem
            {
                Text     = value.ToString(),
                Value    = value.ToString(),
                Selected = value.Equals(metadata.Model)
            });

            if (metadata.IsNullableValueType)
            {
                items = SingleEmptyItem.Concat(items);
            }

            return(htmlHelper.DropDownListFor(
                       expression,
                       items
                       ));
        }