首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IEnumerable<SelectListItem>不与枚举结合

IEnumerable<SelectListItem>不与枚举结合
EN

Stack Overflow用户
提问于 2015-11-22 14:21:11
回答 1查看 299关注 0票数 0

我试图使用enum作为DropDownList的文本和值的来源。不幸的是,它没有像预期的那样工作-- DropDownList已经被填充,但是没有选择任何选项。

这里是枚举:

代码语言:javascript
复制
public enum OrderLineState
        {
            Draft = 0,
            InProcess = 1,
            Done = 2
        }

下面是我如何从枚举中填充DropDown:

代码语言:javascript
复制
    public IEnumerable<Helper.OrderLineStateData> GetOrderLineStates()
        {
            return from Enums.OrderLineState s in Enum.GetValues(typeof(Enums.OrderLineState))
                   select new Helper.OrderLineStateData() { OrderLineStateId = (int)s, OrderLineStateName = s.ToString() };
        }

我是主计长:

代码语言:javascript
复制
        [Authorize]
        public async Task<ActionResult> EditOrderLine(int id)
        {
            ViewBag.OrderLineStates = new SelectList(_olr.GetOrderLineStates(), "OrderLineStateId", "OrderLineStateName");
            var result = await _olr.GetAllOrderLines(id);
            return PartialView(result);
        }

最后- Razor View:

代码语言:javascript
复制
<td>
      @Html.DropDownListFor(x => item.LineState, (IEnumerable<SelectListItem>)ViewBag.OrderLineStates, new { @class = "form-control" })
</td>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-22 16:08:59

如果您是MVC 5,那么就有一个枚举助手。试试这个:

代码语言:javascript
复制
public enum OrderLineState
{
    [Display(Name = "Draft")]
    Draft = 0,
    [Display(Name = "In Process")]
    InProcess = 1,
    [Display(Name = "Done")]
    Done = 2
}

然后

代码语言:javascript
复制
@Html.EnumDropDownListFor(model => model.LineState)

http://www.drdobbs.com/windows/aspnet-mvc-51/240168353

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33855818

复制
相关文章

相似问题

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