首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在ASP.NET MVC中从枚举创建下拉列表?

如何在ASP.NET MVC中从枚举创建下拉列表?
EN

Stack Overflow用户
提问于 2008-12-23 09:25:43
回答 36查看 411.1K关注 0票数 718

我正在尝试使用Html.DropDownList扩展方法,但不知道如何将其与枚举一起使用。

假设我有一个如下所示的枚举:

代码语言:javascript
运行
复制
public enum ItemTypes
{
    Movie = 1,
    Game = 2,
    Book = 3
}

如何使用Html.DropDownList扩展方法创建包含这些值的dropdown?

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

EN

Stack Overflow用户

发布于 2013-02-04 19:01:31

我在这方面做得很晚,但我只是找到了一种非常酷的方式,只需要一行代码就可以做到这一点,如果你愿意添加Unconstrained Melody NuGet包(来自Jon Skeet的一个很好的小库)。

此解决方案更好,因为:

  1. 它确保(具有泛型类型约束)值确实是枚举值(由于不受约束的旋律)
  2. 它避免不必要的装箱(由于不受约束的旋律)
  3. 它缓存所有描述以避免在每次调用时使用反射(由于不受约束的旋律)
  4. 它比其他解决方案的代码更少!

< code >G210

因此,以下是使其正常工作的步骤:

Install- Package UnconstrainedMelody"

  • Add a

  • on your model,
  1. In Package Manager Console,"Install-Package UnconstrainedMelody“
  2. Add a property on your model:

//将"YourEnum“替换为您的枚举公有文本类型{ get { IEnumerable AllItems ().Select(enumValue => SelectListItem {SelectListItem= enumValue.ToString(),Text = enumValue.GetDescription() });} }

现在,您已经在模型上公开了SelectListItem的列表,您可以使用此属性作为源来使用@Html.DropDownList或@Html.DropDownListFor。

票数 4
EN
查看全部 36 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/388483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档