如何从 ASP.NET MVC 中的枚举创建下拉列表? [英] How do you create a dropdownlist from an enum in ASP.NET MVC?

查看:27
本文介绍了如何从 ASP.NET MVC 中的枚举创建下拉列表?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用 Html.DropDownList 扩展方法,但不知道如何通过枚举使用它.

I'm trying to use the Html.DropDownList extension method but can't figure out how to use it with an enumeration.

假设我有一个这样的枚举:

Let's say I have an enumeration like this:

public enum ItemTypes
{
    Movie = 1,
    Game = 2,
    Book = 3
}

如何使用 Html.DropDownList 扩展方法使用这些值创建下拉列表?

How do I go about creating a dropdown with these values using the Html.DropDownList extension method?

或者我最好的办法是简单地创建一个 for 循环并手动创建 Html 元素?

Or is my best bet to simply create a for loop and create the Html elements manually?

推荐答案

对于 MVC v5.1 使用 Html.EnumDropDownListFor

@Html.EnumDropDownListFor(
    x => x.YourEnumField,
    "Select My Type", 
    new { @class = "form-control" })

<小时>

对于 MVC v5 使用 EnumHelper

@Html.DropDownList("MyType", 
   EnumHelper.GetSelectList(typeof(MyType)) , 
   "Select My Type", 
   new { @class = "form-control" })

<小时>

对于 MVC 5 及更低版本

我将 Rune 的答案卷成扩展方法:


For MVC 5 and lower

I rolled Rune's answer into an extension method:

namespace MyApp.Common
{
    public static class MyExtensions{
        public static SelectList ToSelectList<TEnum>(this TEnum enumObj)
            where TEnum : struct, IComparable, IFormattable, IConvertible
        {
            var values = from TEnum e in Enum.GetValues(typeof(TEnum))
                select new { Id = e, Name = e.ToString() };
            return new SelectList(values, "Id", "Name", enumObj);
        }
    }
}

这允许你写:

ViewData["taskStatus"] = task.Status.ToSelectList();

通过使用MyApp.Common

这篇关于如何从 ASP.NET MVC 中的枚举创建下拉列表?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆