Feedback

C# - Extension method for filtering enum value in razor forms

Veröffentlicht von am 16.11.2015
(0 Bewertungen)
The extension method EnumDropDownListFor has an extra parameter to filter enum-values in a dropdownlist in an asp.net razor form.

Example:

<div>
@Html.EnumDropDownListFor(
model => model.Category,
(category => (category != Category.Books)),
new { @class = "form-control" })
</div>
GFU-Schulungen  [Anzeige]

XML und .NET Überblick

Um auf dem neuesten Wissensstand zu sein, sollten Sie unser aktuelles ASP .NET Komplett Seminar belegen.
Nach dem Seminar kennen Sie die wichtigsten Strömungen in der Software-Technologie

VB.NET Komplett

Sie stehen vo der Aufgabe, individuelle Anwendungen für Windows zu schreiben. Hier ist VB.NET die optimale Sprache. Sie erlernt sich recht leicht und passt sich komplett in die .NET Umgebung von Microsoft ein. Nach der Schulung entwickeln Sie anwenderfreundliche Programme in VB.NET . Mit den objektorientierten Modellen in VB.NET erzeugen Sie außerdem wiederverwendbare Komponenten.

namespace HtmlHelper.Extensions
{
    using System;
    using System.Linq;
    using System.Linq.Expressions;
    using System.Web.Mvc;
    using System.Web.Mvc.Html;

    public static class SelectExtension
    {
        public static MvcHtmlString EnumDropDownListFor<TModel, TEnum>(this HtmlHelper<TModel> htmlHelper,
        Expression<Func<TModel, TEnum>> expression, Func<TEnum, bool> filter, object htmlAttributes) where TEnum : IConvertible
        {
            if (expression == null)
            {
                throw new ArgumentNullException("expression");
            }

            if (!typeof(TEnum).IsEnum)
            {
                throw new ArgumentException("TEnum");
            }

            var selectList = Enum.GetValues(typeof(TEnum))
                    .Cast<TEnum>()
                    .Where(e => filter(e))
                    .Select(e => new SelectListItem
                    {
                        Value = e.ToUInt64(null).ToString(),
                        Text = e.ToString(),
                    });

            return htmlHelper.DropDownListFor(expression, selectList, htmlAttributes);
        }
    }
}

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!